快速跨平台的C/C++哈希库

13

有没有一款高性能的哈希库可以跨平台用于 C/C++,支持 MD5、SHA1、CRC32 和 Adler32 等算法?

我最开始以为 Boost 库有,但显然并没有(至少目前还没)。

到目前为止,我找到的最有前途的是 Crypto++,你还有其他建议吗?http://www.cryptopp.com/ 这个库看起来相当全面。


我会选择使用cryptopp。 - Skurmedel
7个回答

9

对于通常的加密哈希(如MD?,SHA?等),openssl是最具可移植性和可能最快的。您提到的哈希都不适用于高性能数据结构,如哈希表。这些数据结构推荐使用的哈希函数是:FNV、Jenkins和MurmurHash。


1
有趣。你能发一下链接吗?(是的,我知道,我可以谷歌那些...) - Jason S
谢谢,我会研究一下openssl。哈希值的使用不会用于哈希表,而是用作身份验证和文档验证的哈希值(是否被篡改等)。 - The Unknown

4

QT似乎实现了MD4、MD5和SHA1 链接1


5
为什么要包含整个小部件库才能使用它的MD5和SHA-1实现?如果你已经在使用QT,那这可能是一个可行的选择,否则就有些过度了。 - Andreas Magnusson
1
Doxygen使用QTCore而不使用任何GUI类。事实证明,QT具有相当好的平台抽象能力。请参见Doxygen FAQ#9。 - deft_code

2
我肯定会选择CryptoPP,它还有一个不错的许可证。

是的,只需拿走你需要的代码,你就可以开始了。 - Skurmedel

1

1

看一下plibsys C库:它支持MD5、SHA1、SHA-2(224、256、384、512)、SHA-3(224、256、384、512)和GOST 34.11-94加密哈希算法。该库本身是轻便且可移植的。


1

zlib内置了一个crc32变体的实现,并且被广泛移植。=)


1

设备跨平台?如果它对你的意义与我相同,那就意味着不是Linux或者可能是操作系统无关的。我会并且已经避免使用像openssl这样的东西。我选择了libtomcrypt。至于速度如何?快速、便携、C语言,任选两个。


那个libtomcrypt很有趣。 - Johan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接