【问题标题】:How do I get OpenSSL style salted MD5 in Ruby?如何在 Ruby 中获得 OpenSSL 风格的盐渍 MD5?
【发布时间】:2012-04-03 14:06:46
【问题描述】:

我说的是这个:

$ openssl passwd -1 -salt thesalt thepassword
$1$thesalt$HAWpBmvUCutuyTS4JwevI.

在 PHP 中它看起来像这样:

crypt('thepassword', ('$1$'.'thesalt')); # this gives the same output as above

我正在尝试在 Ruby 1.9 中实现相同的格式。有人告诉我 Ruby 的 String#crypt 会这样做,但事实并非如此。我到处寻找答案,但我一无所获。

如果有任何帮助,我会尝试在 Windows XP 上执行此操作。 Ruby 版本:ruby 1.9.3p0 (2011-10-30) [i386-mingw32]

只是为了避免 cmets 告诉我使用 MD5 或其他任何东西以外的东西,如果可以的话,我会的。这个选择不取决于我。

谢谢。

编辑:我想在不使用 openssl 的情况下执行此操作,因为这对于我的需要来说太慢了。

【问题讨论】:

  • 如果有人感兴趣,我确实找到了一个名为 Crypt3 的 Ruby gem,它可以满足我的需求,但不幸的是它太慢了。我已经对其进行了一些优化,但这并没有太大帮助。我可能会用 C 重写它,看看能得到什么。
  • 如果你打算用它来做密码认证,慢可能正是你想要的。越快越容易暴力破解。
  • 计算速度很慢,是的。执行速度不慢。无论如何,这不是我使用它的目的。不过还是谢谢你的回复。

标签: ruby openssl md5 salt crypt


【解决方案1】:

如果一切都失败了,您可以使用反引号调用openssl 可执行文件:

password = "thepassword"
salt = "thesalt"
hashed = `openssl passwd -1 -salt #{salt} #{password}`

puts hashed  # => $1$thesalt$HAWpBmvUCutuyTS4JwevI.

【讨论】:

  • 感谢您的回复,但我想避免调用 openssl,因为在批处理作业中这样做非常慢。
【解决方案2】:

该死。我也希望得到同样的结果。

另请参阅Generate openssl password with Ruby,了解它不在 ruby​​ 中的原因。

【讨论】:

    猜你喜欢
    • 2014-10-31
    • 1970-01-01
    • 2011-04-03
    • 2011-08-07
    • 2016-07-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多