下午好!;)
我想做的事:
我有兴趣验证传输的文件完整性。
我是如何接近它的:
我正在考虑为此使用哈希码,但有一个问题。这些文件可能非常大,所以我需要能够迭代生成哈希。我无法将整个文件加载到内存中。
到目前为止我所看到的:
我正在研究murmur3和skein的散列函数。我相信我了解如何使其与 skein 一起使用,但我构建的版本未能通过所有已知的结果单元测试。我不确定如何“链接”杂音以获得有效结果。
有什么建议么?
大多数哈希算法在固定大小的数据块上运行 - 例如,您可以查找 SHA1 或 MD5 参考实现,它们使用“init/loop { update }/finalize”构造,允许您传递任意多或少的数据每次更新。
看看例如 Skein,他们在参考实现中使用了相同的概念:
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);
为什么您认为需要将整个数据作为一个块传递?你在看简化的包装函数吗?