2

人类会犯错误。当您要求他们提供一些唯一生成的标识某些实体的 ID 时。例如: Order A: has id ABC1234 Order B: has id BCD1235 他们可以打错字,他们可以提供字符串例如:A123, B123, 1 2 3, "Order id B 12/3" 那么对于自动系统来说这是一个挑战识别原始ID。我的问题是是否有任何已知的算法/技术。生成一个

- 唯一的人类可读 ID(不是 sha 或 md5) - 具有容错能力。你可以从一个字符子集仍然解码原始ID。-不区分大小写

容错的一个直观示例是二维码,当二维码的某些部分损坏时,您仍然可以阅读消息。

目标是避免使用诸如 ex 之类的工具/算法。弹性搜索,列文斯坦,即使客户打错字也增加解码原始ID的机会,并减少提供其他一些“原始ID”的机会。

4

1 回答 1

1

除了纠错之外,这个问题的有趣部分是是否有专门为人类阅读和转录而设计的代码。

RFC 3548中,为了避免在 base32 编码中使用容易混淆的字符(1 和 L、0 和 o),做了一些考虑。以人为本的 base-32 编码在这个概念上有一些变化。

对于音频,PGP 字列表旨在为每个字节赋予一个不同的字;它通过有两个 256 个字的列表来帮助防止错误,一个用于偶数字节,另一个用于奇数字节(因此可以检测到丢失的字节或交换的字节)。

这里有一个关于人类友好的、可发音的 ID 的讨论,这可能很有趣,可发音密码(如Diceware)的工作有些相关。

Metafilter 还讨论了易于人类复制的代码,提供了一些更有趣的参考。

于 2014-10-30T10:56:45.223 回答