shasum 返回错误结果

gad*_*ded 2 linux encryption hash

当我使用“shasum”时,计算 SHA256 给出了错误的结果:

$ echo "abcd" | shasum -a 256
fc4b5fd6816f75a7c81fc8eaa9499d6a299bd803397166e8c4cf9280b801d62c  -

# or

$ echo abcd | shasum -a 256
fc4b5fd6816f75a7c81fc8eaa9499d6a299bd803397166e8c4cf9280b801d62c  -
Run Code Online (Sandbox Code Playgroud)

在红宝石中:

$ irb
irb(main):001:0> require "digest"
=> true

irb(main):005:0> Digest::SHA256.hexdigest("abcd")
=> "88d4266fd4e6338d13b845fcf289579d209c897823b9217da3e161936f031589"
Run Code Online (Sandbox Code Playgroud)

在线生成器为我提供了像 ruby​​ 一样的结果。

为什么“shasum”的结果不正确?

par*_*ark 5

这是因为echo默认情况下会在其输出末尾添加一个换行符。尝试使用:

echo -n abcd | ...
Run Code Online (Sandbox Code Playgroud)

相反,它会抑制末尾的换行符。