我在C++中使用openssl sha256函数。
下面两种计算sha256的方式有什么区别?

Way1:只需调用如下的SHA256方法
SHA256((unsigned char*)buffer_to_hash, buffer_size, hashed_payload);
方式2:使用SHA256_CTX,SHA256_Init,SHA256_Update和SHA256_Final。正如这里提到的
generate sha256 with openssl and C++

两个程序产生相同的结果

提到两种方法的示例here

最佳答案

诸如此类的模块错误,两者的意图基本不同。首先进行批处理样式处理。就是说:给它一个完整的字符串,它会产生该完整字符串的哈希。

第二个做增量哈希。如果您没有(或不想)一次对整个字符串进行散列处理,则可以读取一些数据,对其进行操作,再进行一些读取,对其进行操作,等等,直到您全部读取了所有数据。数据。最后,您可以获得整个数据流的整体哈希值。

仅举例来说,假设您正在具有4 Gig RAM的计算机上运行此程序,并且希望散列16 GB的文件。由于数据无法放入RAM中(或接近RAM),因此在这种情况下,第二个可能是更好的选择。同样,如果您正在通过网络接收数据,但不想(不必要)只是存储所有原始数据包,以便可以对它们进行散列并(例如)确认接收。

关于c++ - openssl sha256两种计算方式之间的差异,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18541046/

10-16 11:45