ens*_*are 3 python md5 hashlib
我有 (3) md5sums,我需要将它们组合成一个散列。新的哈希值应为 32 个字符,但区分大小写,并且可以是任何字母或数字。在 Python 中执行此操作的最佳方法是什么?
我首先将 md5 哈希值组合成一个哈希值。您可以使用 SHA256,因为它最终会包含更多字节:
>>> import hashlib
>>> combined = hashlib.sha256()
>>> combined.update(hashlib.md5('test1').digest())
>>> combined.update(hashlib.md5('test2').digest())
>>> combined.update(hashlib.md5('test3').digest())
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用字母、数字和一些额外符号使用 base64 对其进行编码:
>>> import base64
>>> base64.b64encode(combined.digest())
'PeFC3irNFx8fuzwjAz+fE/up9cz6xujs2Z06IH2GdUM='
Run Code Online (Sandbox Code Playgroud)
如果您只需要 32 个字符长,请切掉最后几位:
>>> base64.b64encode(combined.digest())[:32]
'PeFC3irNFx8fuzwjAz+fE/up9cz6xujs'
Run Code Online (Sandbox Code Playgroud)
除了您的OP建议的字母和数字之外,它还可以包含+字母和数字。/如果你想替换它们,可以使用第二个参数进行b64encode:
>>> base64.b64encode(combined.digest(), altchars="AA")[:32]
'PeFC3irNFx8fuzwjAzAfEAup9cz6xujs'
Run Code Online (Sandbox Code Playgroud)