如何在 python 中实现 ruby int(16).to_s(32)

How to implement ruby int(16).to_s(32) in python

我在ruby中有以下代码:

hex = Digest::SHA1.hexdigest(str).to_i(16)
hex.to_s(32)

并且我尝试在 python 中实现它:

import hashlib
import base64

base64.b32encode(hashlib.sha1(str).digest()) 

当我 运行 ruby 中字符串 test 的代码时,我得到 l558vpecm6dqc72c11pt74f9guc2veuj 在 python 我得到 VFFI7ZOMWGN2MHCMBBZ5HEPJQ6MC7O6T python 代码有什么问题?如何获得与 ruby?

相同的结果

我希望这可以帮助您找到不同语言的哈希示例:ruby、python、Go、...:https://gist.github.com/jasny/2200f68f8109b22e61863466374a5c1d

使用gmpy:

import hashlib
import gmpy2

str = 'test'
h = hashlib.sha1(str).hexdigest()
i = int(h, 16)
gmpy2.digits(i, 32)
=> 'l558vpecm6dqc72c11pt74f9guc2veuj'

如果您不想使用 gmpy 并且需要 digits 的原生 Python 版本,那么您可以在答案 here.[=14= 中找到几种实现]