gpt4 book ai didi

python - 有没有什么方法可以定义哈希值由哪些字符组成?

转载 作者:太空宇宙 更新时间:2023-11-03 21:09:39 24 4
gpt4 key购买 nike

例如,我希望使用 python 函数 blake2b 获得的哈希值只有 (acdefghjklmnpqrstuvwxyz2345679)

最佳答案

哈希是一个位串。如果需要,您可以使用一组特定的可打印字符编码该位字符串。十六进制(使用 0123456789abcdef )是最常见的方式,但如果您想要不同的字符集,您可以选择这些字符。

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

如果您想使用单大小写字母和数字对值进行编码,而不会有混淆 0/O1/I 的风险,则有一个名为 Base32 的标准。 Base32 在 Python 中的 base64 模块中可用。标准编码仅使用大写字母,但如果需要,您可以将其转换为小写字母。 Base32 pads 带有 = ,但您可以删除它们以进行存储。

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 将十六进制表示形式转换为整数。

关于python - 有没有什么方法可以定义哈希值由哪些字符组成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55155581/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com