gpt4 book ai didi

ruby - 如何将 SHA1 哈希字符串截断为 32 位字符串

转载 作者:行者123 更新时间:2023-12-04 14:28:14 27 4
gpt4 key购买 nike

我想创建一个可用作加密 key 的 32 位字符串。此字符串/ key 应派生自纯文本字符串,例如:

'I am a string'

我的方法首先是对其进行哈希处理:

hashed_string = Digest::SHA1.hexdigest('I am a string') # => 'bd82fb0e81ee9f15f5929e0564093bc9f8015f1d'

然后只使用前 32 个字符:

hashed_string[0..31] # => 'bd82fb0e81ee9f15f5929e0564093bc9'

但是,我觉得一定有更好的方法,我不确定我是否冒着 2 个输入字符串产生相似键的风险。

什么是更好的方法?我看过this post涉及截断,但在那里找不到吸引我的答案。

最佳答案

如果你想要一个 32 位的字符串(弱)密码:

Digest::SHA1.digest('I am a string').unpack('B32').first
#=> "10111101100000101111101100001110"

同样的信息量也可以用8个16进制数显示:

Digest::SHA1.hexdigest('I am a string')[0,8]
#=> "bd82fb0e"

或 4 个 ascii 字符:

Digest::SHA1.digest('I am a string')[0,4]
#=> "\xBD\x82\xFB\x0E"

关于ruby - 如何将 SHA1 哈希字符串截断为 32 位字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41167555/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com