在 PHP 中,我们使用内置的crypt()函数生成一些密码散列来生成河豚散列。
<?php $hash = crypt("secure password", '$2a$10$ ... salt here ... $');
我看到 ruby 有String#crypt,但我们得到的输出完全不同(更短的哈希)。查看手册页crypt (3)
,只有一些 Linux 发行版向 glibc 添加了河豚支持,所以我认为 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 中生成的相同的河豚哈希吗?