Hash SHA的SHA作为复合对象的签名

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

我有一堆大的物体,它们的结构和向量。有时检查复合对象的完整性很重要;为此,我使用对象的Sha256“签名”

至少有两种方法可以定义复合对象的签名:通过计算组件串联的
sha
,或通过计算组件串联的
sha

也就是说,向量
Object0,Object1,Object2
的第一个方法签名将是
sha(Object0 Object1 Object2)
,第二个方法将是
sha(sha(Object0)sha(Object1)sha(Object2))


使用第二种方法对复合对象进行签名要快得多。问题是,这种计算
sha
s的
sha
s的方法会增加碰撞的几率吗?我会因为散列不是对象而是对象的散列而牺牲任何安全性吗?

虽然我不能提供数学证明,但我会说:不,没关系。

你所描述的是众所周知的对象结构。Git存储库基本上是一棵巨大的Merkle树

这种结构的安全性和您选择的哈希函数的前映像抵抗能力一样强