检查 SHA-256 等安全哈希的便捷跨平台帮助

信息安全 视窗 哈希 linux 工具 苹果系统
2021-08-13 12:27:58

能够获得文件的良好加密校验和通常很有帮助,例如SHA-256哈希。这可用于验证文件完整性,只要您有可靠的哈希来源即可。

默认情况下,Ubuntu 和其他 Linux 和 BSD 版本通过 sha256sum 和 md5sum 程序提供了对命令行 SHA-256 和 MD5 的支持。

在 Mac (10.5) 上,我看到“md5”命令行程序,但没有看到 SHA-256。考虑到 MD5 的哈希冲突问题,这是一个不太理想的选择。

而且我找不到任何默认安装在 Windows 上的软件来计算任何加密哈希。我见过的最接近“标准”的是微软对如何下载可选命令行程序的参考,文件校验和完整性验证实用程序可以执行 SHA-1(仍然相对安全),但不能执行 SHA-256。

我为 SHA-256 运行的一个下载是用于跨平台 GUI 支持的hashcalc ,但我还没有审查或尝试过它。

  • 我是否缺少任何适用于 Windows 或 Mac 的默认安全哈希软件(优于 MD5)?

  • 是否有某个页面可以为各种操作系统提供良好的散列工具建议?理想情况下,它将导致安全、方便的 GUI 解决方案。

澄清:我正在寻找可以与他人分享的建议,这将有助于他们安全地使用哈希。我所说的“安全”是指某些东西,例如,政府雇员可以相对容易地确定风险不会太大。例如,默认安装的、由供应商记录和支持的软件比从 Internet 上安装一些第三方可执行文件的风险要小得多。如果必须是第三方软件,则首选经过专家审查和推荐的软件。

(参见跨平台签名

4个回答

对于 Windows,您可以使用 PowerShell,它默认安装在 Windows 7 / Server 2008 R2 及更高版本上。Get-FileHash 函数是在 Windows 8.1 和 Windows Server 2012 R2 附带的 PowerShell v4 中引入的。对于较旧的 PowerShell 版本,James Manning 博客中的这些脚本可以解决问题。

Get-FileHash 用法示例:

C:\Windows> Get-FileHash -Algorithm md5 .\notepad.exe

Algorithm       Hash                                                                   Path
---------       ----                                                                   ----
MD5             24DA05ADE2A978E199875DA0D859E7EB                                       C:\Windows\notepad.exe

支持的算法有 SHA1、SHA256、SHA384、SHA512、MACTripleDES、MD5 和 RIPEMD160。

想到的一个工具,特别是对于 Unix(或者你应该复数)是 openssl:

openssl dgst -sha256 path/to/file

openssl dgst命令提供了很多常用的哈希选项,openssl 默认安装在大多数 Unix 系统上,也适用于 Windows。我相信它也随 OSX 一起提供。我同意,如果没有这样的工具,Windows 就不太理想了。

至于 GUI 工具,除了您已经提到的 HashCalc,我个人不知道任何其他工具。

在混合的 Windows/Unix 环境中,我用于常见加密算法的是:

不幸的是,两者都没有随 Windows 提供,它们需要单独安装。

这是使用 Python 计算文件的 HMAC 的简单单行程序。在终端中键入十六进制的密钥(或在标准输入中使用 传递它echo … |,但请注意该密钥随后会出现在 shell 历史记录中)。该文件被读入内存,这不适用于大文件。

python -c "import binascii, hashlib, hmac, sys; print hmac.new(binascii.unhexlify(str.strip(sys.stdin.readline())), open(sys.argv[1]).read(), hashlib.sha256).hexdigest()" myfile.dat

在 Windows 上,一个可供非技术人员使用的简单哈希验证器(支持 SHA 和更多,以及 HMAC)是SlavaSoft HashCalc不幸的是,它不是开源的,所以你可能对它的运行没有最大的信心。

美国的 NIST(美国国家标准与技术研究院)怎么样?他们运行一个加密验证程序,并在 http://csrc.nist.gov/groups/STM/cavp/documents/shs/shaval 列出经过验证的加密哈希算法的实现。 htm

它包含一些可以跨平台使用的 Java 库。