gpt4 book ai didi

ruby-on-rails - 是否可以使用 string#crypt 生成更长的哈希值?

转载 作者:数据小太阳 更新时间:2023-10-29 08:29:31 26 4
gpt4 key购买 nike

我有两个关于 Ruby 的 String#crypt(salt) 方法的快速问题:

  1. 在文档中它说盐应该是两个字符。我以为盐可以是我想要的任何东西,不是吗?我使用的是一个大于两个字符的随机值,它似乎工作正常。这是文档中的错误还是我对其工作原理的理解错误?
  2. 目前它生成一个大约 15 个字符的字符串。我想生成更长的内容,至少 32 个字符。有没有办法使用内置的 Ruby 功能来做到这一点?如果不是,推荐使用什么 gem 或插件来简单地生成给定字符串的更长散列?

最佳答案

String#crypt 忽略任何额外的字符,因此只使用前两个。

"foobar".crypt("abc") # => abVbJXzHUY99s
"foobar".crypt("abd") # => abVbJXzHUY99s

相反,您可以使用 SHA1 为您提供 40 个字符的加密并允许任何长度的盐。

require 'digest/sha1'
Digest::SHA1.hexdigest("foobar" + "abc") # => 17dd6cae99582672c4b2ccc78fe4ad0888559ce7
Digest::SHA1.hexdigest("foobar" + "abd") # => 8aba27fd409286946504ac78098c41549d182316

更新:正如 Gaius 指出的那样,SHA1 不是生产的最佳选择。而是使用 SHA256 或 SHA512。有关详细信息,请参阅他的回复。

关于ruby-on-rails - 是否可以使用 string#crypt 生成更长的哈希值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1224694/

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