例如,我想通过使用python函数blake2b得到的哈希值只有(acdefghjklmnpqrstuvwxyz2345679)
哈希是一个位串。如果需要,可以使用一组特定的可打印字符对此位字符串进行编码。十六进制(使用0123456789abcdef
)是最常用的方式,但如果你想要一组不同的字符,你可以选择它们。
要以十六进制编码哈希值,假设您将其作为原始字符串(如标准digest
模块中的hashlib
方法返回的值),请使用Python 3中的hash.hex()
和Python 2中的hash.encode('hex')
.hashlib
模块有一个方法hexdigest
直接返回此编码。
如果你想使用单个字母的字母和数字对值进行编码,而不会在0/O
和1/I
上产生混淆,那么就有一个名为Base32的标准。 Base32在base64
模块中以Python形式提供。标准编码仅使用大写,但如果需要,您可以转换为小写。使用=
的Base32打击垫,但您可以删除它们进行存储。
import base64, hashlib
hash = hashlib.new('SHA256', b'input').digest()
b32_hash = base64.b32encode(hash).lower().rstrip(b'=')
如果你真的想要特定的30个字符集,你可以使用int(….hexdigest(), 16)
然后convert that integer to a string using the digits of your choice将十六进制表示转换为整数。