寻找能够喷出文件加密哈希的跨平台/可移植程序


1

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

我将在TB级文件上运行此可执行文件,生成SHA,MD5和CRC32(以及将来更多)签名,因此速度非常重要

我想到的正是ReHash ReHashReHash

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

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

当然,我可以在Python中编写一个胶水程序,它将使用加密模块生成我想要的东西,但我更喜欢使用C语言编译的二进制文件。

我将在TB级文件上运行此可执行文件,生成SHA,MD5和CRC32(以及将来更多)签名并从Python代码处理所有这些,因此与Python兼容的东西将是首选,但不以牺牲C为代价喜欢速度。

Answers:


2

python加密操作在本机代码中实现(从C编译)。既然你想要python程序中的值,使用它们会更简单。

Linux附带的校验和计算工具(cksummd5sumsha1sum,...)。大多数其他unices也是如此。GNU实用程序有几个Windows端口(这是你在Linux上获得的):CygwinGnuwin32Msys,...如果你想获得SHA-256和SHA-512,你需要最近的实用程序。

有几种ANSI C实现具有非常自由的各种加密算法许可证,通常不会在单个分发中收集。您可以搜索它们并在小输入上测试它们以检查它们的可靠性。

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

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


虽然加密例程是用C语言编写的,但我似乎没有注意到任何以文件名作为参数的函数。这意味着我需要打开文件并阅读它等等 - 所有这些都来自Python。这意味着这不会像C一样表现。另外,我对现有解决方案更感兴趣而不是推出自己的解决方案!
PoorLuzer 2010年

但文件例程也在 C.
Ignacio Vazquez-Abrams 2010年

2

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


1
Python有一个OpenSSL绑定,这使它成为标准的替代品hashlib。Cygwin层不应该影响纯整数计算的速度,但编译器的质量可能(我确信win32 / i386的编译器比Cygwin的gcc更好,特别是如果64位是可能的话)。
Gilles 2010年

那么哪一个更快更正确:OpenSSL还是hashlib?
PoorLuzer 2010年

1
两者都是正确的,他们实现相同的算法。快,你需要测试。我认为实现轻松简单地覆盖您的庞大数据集比原始速度更重要。
Rich Homolka 2010年

hashlib将是“更容易”的实现,因为它内置。让我看看我是否可以让一些文件验证器正常工作,并在我键入一些代码执行相同的操作之前喷出我想要的哈希值。
PoorLuzer 2010年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.