我测量了我在 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 更快吗?这是为什么?
我测量了我在 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 更快吗?这是为什么?
我不明白为什么EVP_Digest
应该比它使用的方法更快:-)
使用EVP_Digest
您正在委派“他”(它)为您使用哈希算法。显然,这有一些开销。或者您认为EVP_Digest
可以使用一些“神奇地更快”的 MD4 算法而不是“默认”MD4 算法?
从md4/md5开始(强调添加)
应用程序应该使用更高级别的函数 EVP_DigestInit(3) 等,而不是直接调用散列函数。
EVP 摘要例程是消息摘要的高级接口。
高级别==较慢:-)
那么为什么要使用EVP_Digest
? 它在与以前相同的页面中进行了解释:
消息摘要的 EVP 接口几乎总是应该优先于低级接口使用。这是因为代码对使用的摘要变得透明并且更加灵活。