下午好!超越! ;)生成散列数据大于内存(未被捕)
我想要做什么:
我感兴趣的验证传输的文件的完整性。
如何走近它:
我是用这个的哈希码考虑,但有一个问题。这些文件可能非常大,所以我需要能够迭代生成哈希。我无法将整个文件加载到内存中。
我看在什么至今:
我调查散列函数murmur3和skein。我相信我理解如何使它与skein一起工作,但我构建的版本未能通过所有已知的结果单元测试。我不确定如何“连锁”杂音以获得有效的结果。
有什么建议吗?
下午好!超越! ;)生成散列数据大于内存(未被捕)
我想要做什么:
我感兴趣的验证传输的文件的完整性。
如何走近它:
我是用这个的哈希码考虑,但有一个问题。这些文件可能非常大,所以我需要能够迭代生成哈希。我无法将整个文件加载到内存中。
我看在什么至今:
我调查散列函数murmur3和skein。我相信我理解如何使它与skein一起工作,但我构建的版本未能通过所有已知的结果单元测试。我不确定如何“连锁”杂音以获得有效的结果。
有什么建议吗?
大多数散列算法都是对固定大小的数据块进行操作 - 例如,查看SHA1或MD5参考实现,它们使用“init/loop {update}/finalize”结构,允许您在每次更新时按照您的意愿传递尽可能多或少的数据。
看着如绞纱,它们使用相同的概念在他们的参考实现:
int Skein_256_Init (Skein_256_Ctxt_t *ctx, size_t hashBitLen);
int Skein_256_Update(Skein_256_Ctxt_t *ctx, const u08b_t *msg, size_t msgByteCnt);
int Skein_256_Final (Skein_256_Ctxt_t *ctx, u08b_t * hashVal);
为什么你认为你需要通过整个数据作为一个块?你在看简单的包装函数吗?
Egad!我打电话给哈希警察!你肯定会被捕的! – corsiKa 2011-03-10 22:47:41
那么看看http://en.wikipedia.org/wiki/Cyclic_redundancy_check – dexter 2011-03-10 22:48:52
怎么样我想到CRC的,但认为哈希函数是优越的。谢谢 – Jay 2011-03-10 22:52:32