【发布时间】:2012-07-02 16:10:58
【问题描述】:
在 PHP 中,我们使用内置的 crypt() 函数生成一些密码哈希以生成河豚哈希。
<?php $hash = crypt("secure password", '$2a$10$ ... salt here ... $');
我看到 ruby 有 String#crypt,但我们得到的输出完全不同(哈希值要短得多)。查看crypt (3) 的手册页,只有一些Linux 发行版向glibc 添加了blowfish 支持,所以我认为ruby 不支持它。
现在我用谷歌搜索并找到了crypt gem,但它似乎被硬编码为执行 2^16 周期而不是我们正在使用的 2^10。它也在 ruby 1.9.3 中给了我一个例外:
Crypt::Blowfish.new("abc").encrypt_block("foo")
TypeError: can't convert String into Integer
from /Users/chris/.rbenv/versions/1.9.3-p0/lib/ruby/gems/1.9.1/gems/crypt-1.1.4/crypt/blowfish.rb:47:in `|'
有人知道我们如何在 ruby 中生成与在 PHP 中生成的相同的河豚哈希吗?
【问题讨论】: