84669 人学习
152542 人学习
20005 人学习
5487 人学习
7821 人学习
359900 人学习
3350 人学习
180660 人学习
48569 人学习
18603 人学习
40936 人学习
1549 人学习
1183 人学习
32909 人学习
python 用md5生成16位长度字符串,求解
闭关修行中......
两种方法:
import random import string def id_generator(size=16, chars=string.ascii_letters + string.digits): return ''.join(random.choice(chars) for _ in range(size)) print(id_generator()) # 结果 nrICjdPKnxZdp4tI (每次都不同)
# Python 2.x import hashlib print hashlib.md5("fuck gfw").hexdigest()[8:-8] # Python 3.x import hashlib print(hashlib.md5("fuck gfw".encode('utf-8')).hexdigest())[8:-8]
md5加密后通常是32位的编码, 实际上有时候会遇到只要16位的情形, 所以如你所见, 再加一步处理, 取中间的16位即可, 这种活Python最适合了
import hashlib data = 'This a md5 test!' hash_md5 = hashlib.md5(data) hash_md5.hexdigest() # 按16位输出
输出结果 'fdedaafb043d41ff06b6ef249ef53be9'
最简单的方式应该是:
>>> import hashlib >>> hashlib.md5("test").digest() "\t\x8fk\xcdF!\xd3s\xca\xdeN\x83&'\xb4\xf6"
这样就得到了 128 bit(16位)的MD5了。但是不直观,我一般都是以 16进制的格式的:
>>> hashlib.md5("test").hexdigest() '098f6bcd4621d373cade4e832627b4f6'
两种方法:
1. 随机(这个准确说只是个随机生成任意长度字母数字混合的函数而已)
2. md5(这个应该是你要的结果)
附: 16位的MD5加密和32位MD5加密的区别
输出结果 'fdedaafb043d41ff06b6ef249ef53be9'
最简单的方式应该是:
这样就得到了 128 bit(16位)的MD5了。但是不直观,我一般都是以 16进制的格式的: