0

我测量了我在 3 秒内可以调用 MD4 的次数。我使用了 Openssl 的 MD4。但注意到一个有趣的问题。当我MD4(array, size, digest);直接打电话时,我的应用程序说我可以在 3 秒内完成 5438501 个 MD4。当我使用EVP_Digest(array, size, digest, NULL, EVP_md4(), NULL);它时,它说它在 3 秒内完成了 4787370 个 MD4。

那么直接调用比使用 EVP API 更快吗?这是为什么?

4

1 回答 1

2

我不明白为什么EVP_Digest应该比它使用的方法更快:-)

使用EVP_Digest您正在委派“他”(它)为您使用哈希算法。显然,这有一些开销。或者您认为EVP_Digest可以使用一些“神奇地更快”的 MD4 算法而不是“默认”MD4 算法?

md4/md5开始(强调添加)

应用程序应该使用更高级别的函数 EVP_DigestInit(3) 等,而不是直接调用散列函数。

EVP_DigestInit

EVP 摘要例程是消息摘要的高级接口。

高级别==较慢:-)

那么为什么要使用EVP_Digest? 它在与以前相同的页面中进行了解释:

消息摘要的 EVP 接口几乎总是应该优先于低级接口使用。这是因为代码对使用的摘要变得透明并且更加灵活。

于 2013-08-28T12:03:31.020 回答