openssl sha256两种计算方式的差异

openssl sha256 difference between two way of calculating

本文关键字:方式 计算 sha256 两种 openssl      更新时间:2023-10-16

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

方法1:只需像下面的一样调用SHA256方法

SHA256((unsigned char*)buffer_to_hash, buffer_size, hashed_payload);

方法2:使用SHA256_CTX、SHA256_Init、SHA256_Update和SHA256_Final。如前所述使用openssl和C++生成sha256

两个程序产生相同的结果

这里已经提到了两种方法的示例

模块错误等等,两者的意图基本不同。第一个进行批处理。也就是说:你给它一个完整的字符串,它就会产生这个完整字符串的散列。

第二个是增量哈希。如果你不能(或不想)一次访问整个字符串进行散列,它允许你读取一些数据,对其进行操作,读取更多数据,对它进行操作,等等,直到你读取了所有数据。最后,您可以获得整个数据流的总体哈希。

举个例子,假设你在一台RAM为4Gg的计算机上运行这个程序,并且你想散列一个16GB的文件。由于数据无法放入RAM(甚至无法接近RAM),因此在这种情况下,第二个可能是更好的选择。同样,如果你通过网络接收数据,但不(一定)想存储所有原始数据包,这样你就可以对它们进行哈希处理并(例如)确认接收。