2012-12-20 161 views
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

爲什麼,好嗎?

回答

11

您的命令行示例包含一個換行符,該行在Ruby字符串中未指定。嘗試使用-n所以echo跳過換行符:

$ echo "A user's password" | openssl dgst -sha1 -hex 
95f33732bafc1744bf24e0cae4e014ab2e5f1580 
$ echo -n "A user's password" | openssl dgst -sha1 -hex 
62018390552aaba3d344e3b43bfa14e49e535dfc 
+0

明白了。謝謝。 – cdnbcguy

+3

很高興幫助 - 隨時接受這個答案。 ;-) – GargantuChet