Hash SHA的SHA作为复合对象的签名
我有一堆大的物体,它们的结构和向量。有时检查复合对象的完整性很重要;为此,我使用对象的Sha256“签名” 至少有两种方法可以定义复合对象的签名:通过计算组件串联的Hash SHA的SHA作为复合对象的签名,hash,signature,sha,Hash,Signature,Sha,我有一堆大的物体,它们的结构和向量。有时检查复合对象的完整性很重要;为此,我使用对象的Sha256“签名” 至少有两种方法可以定义复合对象的签名:通过计算组件串联的sha,或通过计算组件串联的sha 也就是说,向量Object0,Object1,Object2的第一个方法签名将是sha(Object0 Object1 Object2),第二个方法将是sha(sha(Object0)sha(Object1)sha(Object2)) 使用第二种方法对复合对象进行签名要快得多。问题是,这种计算sha
sha
,或通过计算组件串联的sha
也就是说,向量Object0,Object1,Object2
的第一个方法签名将是sha(Object0 Object1 Object2)
,第二个方法将是sha(sha(Object0)sha(Object1)sha(Object2))
使用第二种方法对复合对象进行签名要快得多。问题是,这种计算
sha
s的sha
s的方法会增加碰撞的几率吗?我会因为散列不是对象而是对象的散列而牺牲任何安全性吗?虽然我不能提供数学证明,但我会说:不,没关系。你所描述的是众所周知的对象结构。Git存储库基本上是一棵巨大的Merkle树
这种结构的安全性和您选择的哈希函数的前映像抵抗能力一样强