在PHP中,我们使用内置的crypt()函数生成一些密码哈希,以生成一个河豚哈希。
<?php $hash = crypt("secure password", '$2a$10$ ... salt here ... $');
我看到ruby有String#crypt,但我们得到的输出完全不同(更短的哈希)。查看crypt (3)
的手册页,只有一些Linux发行版为glibc添加了河豚支持,所以我认为ruby不支持它。
现在我用Google搜索并找到了crypt
宝石,但似乎硬编码为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 `|'
有人知道我们如何在PHP中生成的红宝石中产生相同的河豚哈希?
答案 0 :(得分:1)
BCrypt宝石可以满足我们的需求:
BCrypt::Engine.hash_secret("bob", "$2a$10$ ... salt here ...")