Python中的随机哈希

146 投票
10 回答
150577 浏览
提问于 2025-04-15 12:09

在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对象。

http://docs.python.org/2/library/uuid.html

https://docs.python.org/3/library/uuid.html

179

md5哈希其实就是一个128位的值,所以如果你想要一个随机的md5哈希,可以用下面的代码:

import random

hash = random.getrandbits(128)

print("hash value: %032x" % hash)

不过我不太明白这样做的意义是什么。也许你可以多说说你为什么需要这个...

撰写回答