2012-05-11 42 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'完成同样的事情。 –