我有一堆大物体,它们的结构,以及它们的向量。有时检查复合对象的完整性是很重要的;为此,我使用对象的Sha256“签名”。
至少有两种方式来定义复合对象的签名:通过计算组件的串联的sha
,或者通过计算组件的sha
的串联的sha
。
也就是说,向量Object0, Object1, Object2
的第一个方法签名将是sha(Object0 Object1 Object2)
,第二个方法将是sha(sha(Object0) sha(Object1) sha(Object2))
。
使用第二种方法对复合对象进行签名的速度要快得多。问题是,这种计算sha
s的sha
s的方法会增加碰撞的机会吗?我牺牲了任何安全性,因为我散列的不是对象,而是对象的散列?
发布于 2018-07-25 07:09:48
您在那里描述的内容是众所周知的Merkle tree or hash tree结构。Git仓库基本上就是一个巨大的Merkle树。
这种结构的安全性与您选择的哈希函数的抗原像能力一样强。
发布于 2018-07-25 07:03:56
虽然我无法提供一个数学证明,但我会说:不,这无关紧要。
https://stackoverflow.com/questions/51508668
复制相似问题