【问题标题】:Generate cross-platform compatible Blowfish hash (PHP/Ruby)生成跨平台兼容的 Blowfish 哈希 (PHP/Ruby)
【发布时间】: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 中生成的相同的河豚哈希吗?

【问题讨论】:

    标签: php ruby blowfish crypt


    【解决方案1】:

    BCrypt gem 可以满足我们的需要:

    BCrypt::Engine.hash_secret("bob", "$2a$10$ ... salt here ...")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-23
      • 2011-07-28
      • 1970-01-01
      • 2016-10-06
      • 1970-01-01
      • 2015-11-14
      • 2012-04-22
      相关资源
      最近更新 更多