我不确定如何问这个问题,但这是我所希望的,给定一个可能包含5+n
键的结构(因此,我的系统有 5 个键是强制性的,其他键是可选的) - 我想要一个散列能够确定6
具有相同键的键散列5
是键结构的超集5
并提供附加信息的机制。特别是散列机制,因为有一些约束阻止在每个请求上通过线路发送完整的结构。
为澄清起见,这里有一些信息(示例需要2+n
密钥):
---
name: codebeaker
occupation: developer
用 散列SHA-512
,-256
结果看起来像:
SHA-512
04fe500f2b3e779aba9ecb171224a04d35cc8453eb1521c7e31fd48b56b1cce9
b1e8af775e177e110982bfb16a6ca8652d7d9812ab8a8c316015dc9d6b3b54f7
SHA-256
4833be7086726e7ffd82db206f94f0a4f9fdf7fba00692f626157afed4587c74
当添加一个额外的键时,(下面的例子)我希望能够推断出扩展数据集是第一个的超集。
---
name: codebeaker
occupation: developer
telephone: 49 (0) 123 45 67
但是,不出所料, inMD5
以及SHA-n
我研究过的任何其他散列函数,都没有办法做到这一点,例如:
SHA-512
2fe2c1f01e39506010ea104581b737f95db6b6f71b1497788afc80a4abe26ab0
fc4913054278af69a89c152406579b7b00c3d4eb881982393a1ace83aeb7b6a2
SHA-256
77c2942e9095e55e13c548e5ef1f874396bfb64f7653e4794d6d91d0d3a168e2
(显然)没有相似之处......
我们的用例,即格式化为结构的数据,由第 3 方输入到我们的系统中。处理数据非常昂贵,每次操作需要 2-3 秒,如果我们知道我们有上一次运行的结果,我们可以获得大约 50% 的时间,但是 - 贝叶斯和 Levenstein 文本差异算法不是适合这里,因为我们经常看到作为首字母缩略词的键/值对,以及在完全不相关时可能看起来相似的其他文本。
我们需要的是一种校验和数据的方法(我可能会偏向于我的回答)——这样我们就可以确定它是否包含所有相同的键和相同的数据B
的超集。A
然而,我们的键/值条目中经常有太多的数据,struc
以至于每次通过网络发送它,只是为了确定我们已经看到了更完整的副本,这将是昂贵和浪费的。