2

当我从http://ruby.about.com/od/advancedruby/ss/Cryptographic-Hashes-In-Ruby.htm输入此代码时

#!/usr/bin/env ruby
require 'digest'

password = "A user's password"
hash = Digest::SHA1.hexdigest(password)
puts hash

# This will produce the hash
# 62018390552aaba3d344e3b43bfa14e49e535dfc

我得到了他们说我会的答案。

但是当我输入这个 shell 命令时

echo "A user's password" | openssl dgst -sha1 -hex

我得到 95f33732bafc1744bf24e0cae4e014ab2e5f1580

告诉我为什么?

4

1 回答 1

11

您的命令行示例包含一个换行符,该换行符未在 Ruby 字符串中指定。尝试使用-nsoecho跳过换行符:

$ echo "A user's password" | openssl dgst -sha1 -hex
95f33732bafc1744bf24e0cae4e014ab2e5f1580
$ echo -n "A user's password" | openssl dgst -sha1 -hex
62018390552aaba3d344e3b43bfa14e49e535dfc
于 2012-12-20T04:03:04.613 回答