经过长时间的搜索和尝试,我正在寻求您的帮助。
我试图弄清楚为什么从shell执行以下命令时,AIX环境和其他Linux环境(对于我来说是CentOS)会有不同的结果:
echo -n 37f3173afe3d73698a0d21e88f92gg38ABCDEFGINGRTSA221987327123test1529947146 | openssl dgst -sha1 -hmac 17fd3326gg375316228d18b55600848f
在Centos 6上尝试的结果是
7f3bc86e4193c8809de24ba66821c724f85bb1e8
在AIX 7.1上的结果是
463eb074f3de44cb1b863153df74e7eb9c1d3b56
我不知道它是否相关,但是如果我在两个环境的回声中都删除了“ -n”,则结果是匹配的,但显然都是假的。
我想念什么?
请帮我弄清楚这种头痛的情况。
答案 0 :(得分:1)
可悲的是,echo
尚未标准化,或者它的标准化形式是printf
:
ksh@aix$ printf '%s' 37f3173afe3d73698a0d21e88f92gg38ABCDEFGINGRTSA221987327123test1529947146 |
openssl dgst -sha1 -hmac 17fd3326gg375316228d18b55600848f
(stdin)= 7f3bc86e4193c8809de24ba66821c724f85bb1e8