建议和反馈

请填写你的反馈内容

问答 > 密码学 > 问答详情
求助中

密码学散列元素树10LK

我正在开发一个项目,我有一个对象树。 这个对象树可能非常大,并且可能会受到更多用户非常频繁的修改(例如,添加或删除节点,更改节点的某些属性等)。 现在,每次用户发布更新时,我都需要能够在用户修改树之后获取树的一些哈希值,以便用户可以使用其私有RSA密钥对更新进行签名。 因此,我显然需要哈希加密安全。 但是,每次用户只更改一个节点时,遍历整个树的线性表示是不可行的。

我考虑过这个策略,但我不确定这是否会成功:

  • 我添加到新字段的每个节点,即其所有子节点的SHA256哈希。

  • 节点的散列现在是节点的每个字段的散列,因此包括其子节点的散列。

现在,更新树应该很简单:每次更新节点时,我都会更改其父节点的哈希字段,然后更改祖父节点等等,直到达到根节点,并使用根的哈希值作为哈希值。 这会将此操作的复杂性降低到O(ln(N))而不是O(N)。

但是,我知道相信自己对密码学的直觉是绝对安全的。 这个程序安全吗?


2019-12-03
0
请先登陆或注册

小拇指2019-12-03

这称为哈希树或Merkle树 。 这不是什么新鲜事,而且是安全的。 它通常用于并行化散列,因为散列方法本身是严格顺序的。

除非明确包含数据大小,否则不要连接数据和哈希值。 最好只连接哈希值。


投一票
评论(0)
赞赏(0)
邀请

感谢您的善举,每一次解答会成为新人的灯塔,回答被采纳后获得20算力和相应的LK币奖励