Python中的随机哈希
在Python中,生成一个随机的哈希值(MD5)最简单的方法是什么?
10 个回答
93
secrets
模块是在Python 3.6及以上版本中新增的。它可以很方便地生成安全的随机值,只需要一次调用就可以了。这个模块的函数可以接受一个可选的参数nbytes
,默认值是32(也就是32个字节,换算成比特是256位的令牌)。而MD5算法生成的是128位的哈希值,所以如果你想要类似于“MD5”的令牌,可以把这个参数设置为16。
>>> import secrets
>>> secrets.token_hex(nbytes=16)
'17adbcf543e851aa9216acc9d7206b96'
>>> secrets.token_urlsafe(16)
'X7NYIolv893DXLunTzeTIQ'
>>> secrets.token_bytes(128 // 8)
b'\x0b\xdcA\xc0.\x0e\x87\x9b`\x93\\Ev\x1a|u'
160
我觉得你想要的是一个通用的唯一标识符。那在Python中,UUID模块就是你需要的东西。
import uuid
uuid.uuid4().hex
UUID4会给你一个随机的唯一标识符,它的长度和md5值是一样的。用十六进制表示的话,它会把这个标识符显示成一个十六进制字符串,而不是返回一个uuid对象。
179
md5哈希其实就是一个128位的值,所以如果你想要一个随机的md5哈希,可以用下面的代码:
import random
hash = random.getrandbits(128)
print("hash value: %032x" % hash)
不过我不太明白这样做的意义是什么。也许你可以多说说你为什么需要这个...