【发布时间】:2011-01-13 22:18:49
【问题描述】:
在大文件上计算单个 MD5 校验和时,通常使用什么技术将各种 MD5 值组合成单个值?你只是把它们加在一起吗?我对任何可以做到这一点的特定语言、库或 API 并不真正感兴趣;相反,我只是对它背后的技术感兴趣。有人能解释一下它是怎么做的吗?
在伪代码中给出以下算法:
MD5Digest X
for each file segment F
MD5Digest Y = CalculateMD5(F)
Combine(X,Y)
但是Combine 究竟会做什么呢?它是将两个 MD5 摘要加在一起,还是什么?
【问题讨论】:
-
你为什么要这样做?
-
为了计算太大而无法放入内存的文件的 MD5 值
-
MD5 在计算过程中只有 128 位状态跟踪 512 位文件块;谁在乎文件有多大?
-
@CarlNorum 问题在于哈希实现可能保持状态但无法访问它的接口。考虑
pgcrypto中的digest函数,它仅适用于数据块,无法提供额外的数据,仅仅是因为状态在单独调用时被覆盖。因此,了解单个哈希是否可以组合是很有用的。 postgresql.org/docs/9.1/static/pgcrypto.html 一些用户这样做... postgresql-archive.org/…