如何在 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= 中找到几种实现]
我在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= 中找到几种实现]