2012-05-11 46 views
1

試圖找出爲什麼我的base64 sha1不同。sha1的區別

我得到

密碼 '一個' 結果 'hvfkN/QLP/zhXR3cuerq6jd2Z7g ='

當使用我的Java功能。我可以驗證使用一些隨機的在線工具。

然而,當我嘗試使用命令行和OpenSSL

echo a | openssl dgst -binary -sha1 | openssl base64 

驗證我得到

P3hoUOOHVQ/auDbtfm3Igd4jABs =

這也許是UTF8/bash的事情,所以我試了

echo 'a' | iconv --from-code=ISO-8859-1 --to-code=UTF-8 | openssl dgst -binary -sha1 | openssl base64 

同樣的結果。

我錯過了什麼?

編輯:

如果網站驗證我原來的結果 http://www.tools4noobs.com/online_php_functions/sha1/來計算六角SHA1

86f7e437faa5a7fce15d1ddcb9eaeaea377667b8

轉換十六進制爲Base64 http://tomeko.net/online_tools/hex_to_base64.php?lang=en

hvfkN/QLP/zhXR3cuerq6jd2Z7g =

回答

2

echo附加一個換行符,它將包含在摘要計算中;改爲嘗試printf。還要警惕管道的其他部分添加無關的換行符或其他字符。

+0

現在我知道了,man echo顯示'echo -n'完成同樣的事情。 –