在 Corda 中,附件是如何散列和验证的?
In Corda, how are attachments hashed and verified?
我对 Corda 在将附件 JAR 文件上传到节点时生成的 SecureHash
有以下问题:
- 基于文件内容的散列值是否始终是唯一的?
- 如果 JAR 文件的内容发生变化,哈希是否保证会发生变化(就像使用普通哈希函数一样)?
- 对方能否在自己端验证哈希的完整性(并检查附件是否被篡改)?
- 对方能否验证jar包的真实性(上传者签名)?
- 理论上,
SecureHash
是使用各种散列算法生成的散列的包装器。然而,从 Corda 3.1 开始,只有 SecureHash.SHA256
,它使用 SHA-2 哈希函数系列。与此算法发生哈希冲突的可能性极小。
- 同样,如果 JAR 内容发生变化,哈希将保持不变的可能性极小。
- 在第一次收到附件时,节点会在将其导入附件存储之前检查它是否是有效的 JAR 文件。它不是由交易对手发送附件哈希,而是自己计算附件的哈希并将该哈希用作附件的 ID。
- 自 Corda 3.1 起未实现 JAR 签名。该节点只是检查 JAR 文件是否有效。
我对 Corda 在将附件 JAR 文件上传到节点时生成的 SecureHash
有以下问题:
- 基于文件内容的散列值是否始终是唯一的?
- 如果 JAR 文件的内容发生变化,哈希是否保证会发生变化(就像使用普通哈希函数一样)?
- 对方能否在自己端验证哈希的完整性(并检查附件是否被篡改)?
- 对方能否验证jar包的真实性(上传者签名)?
- 理论上,
SecureHash
是使用各种散列算法生成的散列的包装器。然而,从 Corda 3.1 开始,只有SecureHash.SHA256
,它使用 SHA-2 哈希函数系列。与此算法发生哈希冲突的可能性极小。 - 同样,如果 JAR 内容发生变化,哈希将保持不变的可能性极小。
- 在第一次收到附件时,节点会在将其导入附件存储之前检查它是否是有效的 JAR 文件。它不是由交易对手发送附件哈希,而是自己计算附件的哈希并将该哈希用作附件的 ID。
- 自 Corda 3.1 起未实现 JAR 签名。该节点只是检查 JAR 文件是否有效。