我需要一个随机字符串,我可以写下来,用于散列函数中的salt。我可以生成一些随机字节,并将它们视为十六进制:
import os, binascii
print(binascii.b2a_hex(os.urandom(32)))
b'76449cd6134d64353122102fcb512d1eae1bd8437202b6e06e91a422ce9e386b' # 64 chars
很好,但如何将这些字节直接转换为字符串,即不一定可打印,但正好是32个字符?哈希函数需要字符串,而不是最大长度为32的“字节”类型
我不知道如何用Python进行编码,但我想我需要类似于旧的8位计算机或C程序将字节转换为字符(ASCII或其他)的方式
这是Django的make_password函数的salt输入
您可以使用
chr
并加入它们:或者
decode
用拉丁语说:如果您确实需要遍历长度为64的十六进制字符串,只需先将其解压缩:
或者从随机的32个字节开始,对其进行十六进制显示,并对其进行解码(不使用十六进制+取消解码)以供使用:
相关问题 更多 >
编程相关推荐