我有许多大型对象、结构体和向量。有时检查复合对象的完整性很重要,为此我使用对象的Sha256“签名”。
定义复合对象的签名至少有两种方法:通过计算组件连接的sha或通过计算组件的sha连接的sha。
也就是说,对于向量Object0、Object1、Object2的第一种方法签名将是sha(Object0 Object1 Object2),而第二种方法将是sha(sha(Object0) sha(Object1) sha(Object2))。
在我所做的工作中,使用第二种方法给复合对象签名更快。问题是,这种计算sha的sha方法是否增加了碰撞的可能性?因为我哈希的不是对象本身,而是对象的哈希,所以是否会牺牲任何安全性?