【发布时间】:2012-01-22 03:27:02
【问题描述】:
有一个用 PHP 编写的应用程序,我正在将其转换为 Ruby。加密密码时,PHP 应用程序使用以下代码:
if($method == 2 && CRYPT_BLOWFISH) return crypt($pass, '$2a$07$xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/xxxxxxxxxxxxxxxxxxx$');
我假设这是使用 Blowfish 实现。这里的 x 都是 a-zA-Z0-9 字符。
Ruby 中的 Blowfish 实现使用以下语法(取自 http://crypt.rubyforge.org/blowfish.html):
blowfish = Crypt::Blowfish.new("A key up to 56 bytes long")
plainBlock = "ABCD1234"
encryptedBlock = blowfish.encrypt_block(plainBlock)
我没有 56 字节或更少字节长的字符串,不清楚 PHP 版本应该是什么。那么如何编写一个 Ruby 函数来加密密码以提供与 PHP 相同的结果呢?
【问题讨论】:
标签: php ruby authentication encryption blowfish