Linux 命令行 SHA-256 哈希与在线工具不同?

Posted

技术标签:

【中文标题】Linux 命令行 SHA-256 哈希与在线工具不同?【英文标题】:Linux command line SHA-256 hash different from online tools? 【发布时间】:2011-04-15 22:36:59 【问题描述】:

我正在寻找一种快速计算密码的 SHA-256 哈希的方法,以便我可以将一些测试数据上传到我们使用 Spring Security 进行身份验证的数据库中。

首先我找到了 linux 实用程序 sha256sum 并再次输入密码“admin”并得到了这个结果:

fc8252c8dc55839967c58b9ad755a59b61b67c13227ddae4bd3f78a38bf394f7

然后我尝试了几个在线服务(为了好玩):

http://www.xorbin.com/tools/sha256-hash-calculator http://www.fileformat.info/tool/hash.htm?text=admin

两者都给了我非常不同的结果:

8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918

为什么它们不同,哪个是正确的?

【问题讨论】:

你确定第一个哈希是 256 位的吗?它只有 160 位。第二个似乎是合理的,它有 256 位。 @Manuel -- 是的,我把它弄混了......已修复。 Generating a sha256 from the Linux command line的可能重复 @HDave 在此处查看您的结果sha256generator.online 【参考方案1】:

根据我的 Mac OS X 上的echo -n "admin" | shasum -a 256,后者是正确的。请注意,您需要执行echo -n,否则在经过哈希处理的字符串中还有一个\n。由于shasum 是一个Perl 脚本,您可能也拥有它。如果是这样,请尝试使用它。

【讨论】:

【参考方案2】:

我在做类似的事情时遇到了这个问题。

我想我在做的事情类似于echo string | sha256sum

当我通过 php 哈希生成器运行它时,我会得到不同的结果。原因是因为 echo 添加了新行。

我不知道你是否使用了 echo,但如果你正在尝试 echo -n string | sha256num

【讨论】:

用荷马辛普森的不朽话语---DOH! 让我免于拔毛!谢谢:) 错字更正 "sha256num" -> "sha256sum"

以上是关于Linux 命令行 SHA-256 哈希与在线工具不同?的主要内容,如果未能解决你的问题,请参考以下文章

markdown 从Linux的命令行生成SHA256

计算哈希似乎与 SHA256 错误

openssl evp 哈希算法(md5,sha1,sha256)

是否有内置的方法或插件让Jenkins为我的工件生成SHA256哈希?

如何将 powershell 中文件的 SHA256 哈希值与已知值进行比较?附加问题

内存中的Linux内核代码检查sha256 sum