【发布时间】:2012-05-06 15:58:44
【问题描述】:
我正在使用 OpenSSL 库编写 C 语言。
如何使用 md5 计算大文件的哈希?
据我所知,我需要将整个文件作为 char 数组加载到 RAM 中,然后调用哈希函数。但是如果文件大约 4Gb 长呢?听起来是个坏主意。
已解决:感谢askovpen,我找到了我的错误。我用过
while ((bytes = fread (data, 1, 1024, inFile)) != 0)
MD5_Update (&mdContext, data, 1024);
不是
while ((bytes = fread (data, 1, 1024, inFile)) != 0)
MD5_Update (&mdContext, data, bytes);
【问题讨论】:
-
我很想知道需要它吗?如果它不是线程安全的,那肯定是个坏主意,因为它可能会长时间阻塞程序并且 P.O.用户
-
加密文件与使用 MD5 之类的哈希函数对其进行哈希处理不同。你真的是说哈希,还是要加密文件?
-
MD5 是基于流的。您不需要一次将整个 4GB 加载到内存中 - 您可以分块读取它。
-
对不起,我的意思当然是散列文件,而不是加密。