如何使用gcrypt在c ++中计算大文件的哈希值

时间:2011-02-24 16:27:32

标签: c++ hash large-files

我有需要哈希的文件,这个文件可能太大而无法一次读入内存,所以我需要一种方法使用gcrypt以更易于管理的大小散列文件?我该怎么办?

谢谢

2 个答案:

答案 0 :(得分:1)

我发现了如何做到这一点:

gcrypt句柄是有效的,并在其输入的基础上构建,因此无论是向句柄写入5个1k块还是向一个5k块数据写入,哈希都是相同的。在您尝试读取哈希之前,哈希本身并未最终确定,因此您可以在一个循环中一次读取大文件的块并将它们传递给gcrypt,从而防止自己在内存中占用太多内容一次。

答案 1 :(得分:0)

我之前没有解决过这个问题,但我可以想到两个可能的解决方案。

  1. 存储哈希集。让我们说你的内存大小是1k,你的文件是5k。你可以有5个这个文件。拿出每个部分的哈希并存储一组答案。在此示例中,您将存储5个哈希值来表示此文件。

  2. 使用选项1,然后将哈希值串在一起并获取此哈希值。

  3. 主要取决于您对哈希值的存储方式的限制。

    希望这有帮助。