标签: merkle-tree

用于字符串的Java中最快的哈希算法

为简单起见,我的问题是:如何尽快散列字符串(大约200个字符).安全性并不重要,但碰撞是一件大事.

注意:经过快速调查,似乎MurmurHash3可能是最好的选择.我愿意接受任何评论,否则说'

首先,我知道还有很多其他类似的问题,但我还没有找到令人信服的答案.

我有一个对象列表,每个对象包含一个大约3k段的列表,保存到数据库中.每隔X个小时,这些段落都会被重新生成,我需要查找是否有任何段落发生了变化,如果是,则只推送那些新段落.

我发现找到差异的最快方式(知道大部分内容都是相同的)是创建MerkleTree,将其保存到数据库中,并迭代MerkleTree以找出差异,而不是比较段落本身.

在我的情况下,这意味着我将每秒创建数万个哈希值,以与数据库中的内容进行比较.因此,我需要一种非常有效的方法来创建这些哈希.我不关心安全性,我只需要确保碰撞的数量仍然非常低.

Java中可用的最佳算法是什么?


在我的例子中,主要对象由Sections组成,Sections由Languages组成,由Paragraph组成.比较策略是:

1)如果对象哈希相同,则停止,否则转到2)

2)循环所有Section,只保留带有不同散列的Section

3)循环这些部分的所有语言,只保留具有不同散列的语言

4)循环所有这些语言的所有段落,如果哈希值不同,则推送新内容.

java hash merkle-tree

7
推荐指数
1
解决办法
7461
查看次数

如何从基板中的子树中获取 roothash 或证明?

根据这里的示例,我看到可以使用srml_support::storage::childAPI 从任意数据中创建一个 Merkle 子树。但是我们如何使用它获得默克尔根或特定叶子的证明呢?我看到API没有提供任何这样命名的函数。

storage rust merkle-tree substrate

5
推荐指数
1
解决办法
126
查看次数

Merkle树用于差异比较,在Cassandra中

我正在阅读有关Cassandra维修的文件,它说

比较从Merkle树的顶部节点开始。如果检测到差异则处理进行到左子节点,然后进行比较,然后比较右子节点。

但是,默克尔树的非叶节点表示:

树中较高的每个父节点都是其各自子节点的哈希。由于Merkle树中的较高节点表示数据在树的更下方,因此Casandra可以独立检查每个分支,而无需协调器节点下载整个数据集。

据此,以及我发现的其他数据结构文章,它们都表明只有在两棵Merkle树的根不同的情况下,才进行以下比根深的比较。我不确定文档是否正确描述了我可能理解的问题,或者实际上有错误?

algorithm cassandra data-structures merkle-tree

4
推荐指数
1
解决办法
1405
查看次数

merkletreejs 方法 getHexProof 不起作用?

我正在尝试使用 merkletreejs 库测试 merkle 证明,但我不明白为什么它有效

\n
const tree = new MerkleTree(leaves, SHA256)\nconst root = tree.getHexRoot()\nconst leaf = SHA256('a')\nconst proof = tree.getProof(leaf) // \xd0\xa0\xd0\x90\xd0\x91\xd0\x9e\xd0\xa2\xd0\x90\xd0\x95\xd0\xa2\nconsole.log(tree.verify(proof, leaf, root)) // true\n
Run Code Online (Sandbox Code Playgroud)\n

但这不是吗?

\n
const tree = new MerkleTree(leaves, SHA256)\nconst root = tree.getHexRoot()\nconst leaf = SHA256('a')\nconst proof = tree.getHexProof(leaf)\nconsole.log(tree.verify(proof, leaf, root)) // false\n
Run Code Online (Sandbox Code Playgroud)\n

merkle-tree

1
推荐指数
1
解决办法
1581
查看次数