1

试图弄清楚为什么我的 base64 sha1 是不同的。

我明白了

密码 'a' 结果 '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=

4

1 回答 1

2

echo附加一个换行符,它将包含在摘要计算中;试试吧printf。还要小心管道的其他部分添加无关的换行符或其他字符。

于 2012-05-11T22:00:17.257 回答