为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕尼黑的夜晚无繁华 2023-02-22 19:11:32
我在红宝石中有以下代码:hex = Digest::SHA1.hexdigest(str).to_i(16)hex.to_s(32)我尝试在 python 中实现它:import hashlibimport base64base64.b32encode(hashlib.sha1(str).digest()) 当我在 ruby 中运行字符串的代码时,test我得到了l558vpecm6dqc72c11pt74f9guc2veuj 而在 python 中,我得到了VFFI7ZOMWGN2MHCMBBZ5HEPJQ6MC7O6T python 代码有什么问题?如何获得与红宝石相同的结果?
查看完整描述

2 回答

?
炎炎设计

TA贡献1808条经验 获得超4个赞

使用gmpy

import hashlib

import gmpy2


str = 'test'

h = hashlib.sha1(str).hexdigest()

i = int(h, 16)

gmpy2.digits(i, 32)

=> 'l558vpecm6dqc72c11pt74f9guc2veuj'

如果您不想使用 gmpy 并且需要原生 Python 版本,那么您可以在此处的digits答案中找到几种实现。


查看完整回答
反对 回复 2023-02-22
?
胡子哥哥

TA贡献1825条经验 获得超6个赞

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


查看完整回答
反对 回复 2023-02-22
  • 2 回答
  • 0 关注
  • 63 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信