我们有什么办法可以定义哈希值组成的字符吗?

问题描述 投票:1回答:1

例如,我想通过使用python函数blake2b得到的哈希值只有(acdefghjklmnpqrstuvwxyz2345679)

python hash cryptography
1个回答
0
投票

哈希是一个位串。如果需要,可以使用一组特定的可打印字符对此位字符串进行编码。十六进制(使用0123456789abcdef)是最常用的方式,但如果你想要一组不同的字符,你可以选择它们。

要以十六进制编码哈希值,假设您将其作为原始字符串(如标准digest模块中的hashlib方法返回的值),请使用Python 3中的hash.hex()和Python 2中的hash.encode('hex').hashlib模块有一个方法hexdigest直接返回此编码。

如果你想使用单个字母的字母和数字对值进行编码,而不会在0/O1/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将十六进制表示转换为整数。

© www.soinside.com 2019 - 2024. All rights reserved.