寻找一个跨平台/可移植的程序,可以输出文件的加密哈希值

寻找一个跨平台/可移植的程序,可以输出文件的加密哈希值

我正在寻找一个程序,该程序的源可以在 Windows 和 Linux 之间移植(例如 ANSI C 等),它可以生成传递给它的文件/文件列表的加密哈希(如 MD5、SHA 等)以及 CRC32。

我将在数 TB 的文件上运行此可执行文件,生成其 SHA、MD5 和 CRC32(以及未来更多)签名,以提高速度很重要

我想到的是 ReHash重新哈希重新哈希

不幸的是,我发现很多用户抱怨哈希的实现存在错误,以及填充(基于块的算法)的实现方式存在错误。

我不是密码学专家,只是在寻找一个黑盒解决方案,可以简单地给我我想要的哈希值,而不需要我编译一些代码,我想知道是否没有更好的了?

当然,我可以用 Python 编写一个粘合程序,使用加密模块来生成我想要的内容,但我更喜欢用 C 之类的语言编译的二进制文件。

我将在数 TB 的文件上运行这个可执行文件,生成它们的 SHA、MD5 和 CRC32(以及未来更多)签名,并通过 Python 代码处理所有这些,因此最好使用与 Python 兼容的东西,但不能以牺牲 C 的速度为代价。

答案1

Python 加密操作以本机代码(从 C 编译)实现。由于您需要 Python 程序中的值,因此使用它们会更简单。

Linux 附带了用于校验和计算的实用程序(cksummd5sumsha1sum、 ...)。大多数其他操作系统也附带了这些实用程序。GNU 实用程序有多个 Windows 端口(这是您在 Linux 上获得的):赛格威Gnuwin32系统管理,...如果您想获得 SHA-256 和 SHA-512,您将需要足够新的实用程序。

有几种 ANSI C 实现,它们对各种加密算法的许可证非常宽松,通常不包含在单个发行版中。您可以搜索它们,并在小输入上测试它们以检查它们的可靠性。

在 Windows 下,请确保您正确地将文件视为二进制或文本,因为校验和是通过字节流而不是行流定义的。(通常您希望以二进制模式打开文件,但如果您有一个文本文件被转码为 Windows 行尾,则需要将其作为文本打开以反转效果。)在任何操作系统下,请确保在打开文件时不进行任何编码转换。

由于速度对您来说非常重要,请收集您能找到的所有实现,并在中等大小的输入(几兆字节)上对它们进行基准测试。不同的实现可能在不同的体系结构上提供更好的速度。64 位实现可能会更快,只要您可以运行它们。

答案2

OpenSSL 有计算哈希的工具。cygwin (http://www.cygwin.com/) 项目有 openssl 工具。虽然由于 cygwin 层的原因,它会比纯 Windows 应用程序慢一点,但您还将获得一个可以编写哈希生成脚本的环境。

相关内容