猿问

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

我在红宝石中有以下代码:


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 代码有什么问题?如何获得与红宝石相同的结果?


慕尼黑的夜晚无繁华
浏览 65回答 2
2回答

炎炎设计

使用gmpy:import hashlibimport gmpy2str = 'test'h = hashlib.sha1(str).hexdigest()i = int(h, 16)gmpy2.digits(i, 32)=> 'l558vpecm6dqc72c11pt74f9guc2veuj'如果您不想使用 gmpy 并且需要原生 Python 版本,那么您可以在此处的digits答案中找到几种实现。

胡子哥哥

我希望这可以帮助您找到不同语言的哈希示例:ruby、python、Go、...:https://gist.github.com/jasny/2200f68f8109b22e61863466374a5c1d
随时随地看视频慕课网APP

相关分类

Python
我要回答