人类犯错误。 当您需要它们提供一些识别某个实体的唯一生成ID时。 例如: 订单A:有ID ABC1234 订单B:有ID BCD1235 他们可以拼错,他们可以提供字符串ex:A123,B123,1 2 3,"订单ID B 12/3" 然后对于自动系统来说,挑战是识别原始ID。 我的问题是有没有任何已知的算法/技术。生成
- 独特的人类可读ID(不是sha或md5) - 具有容错能力。您可以从字符的子集仍然解码原始ID。 - 不区分大小写
容错的一个直观例子是QR码,当qr码的某些部分损坏时你仍然可以阅读该消息。
目标是避免像ex那样的工具/算法。弹性搜索,levenstein并增加解码原始id的机会,即使客户输入拼写错误,也减少了其他一些原始id"将提供。
答案 0 :(得分:1)
除了纠错之外,这个问题的有趣部分是是否有专门为人类设计的代码来阅读和转录。
在RFC 3548中,考虑避免在base32编码(1和L,0和o)中使用容易混淆的字符。 Human-oriented base-32 encoding对此概念有一些变化。
对于音频,PGP Word List旨在为每个字节提供一个不同的字;它有两个256字的列表,一个用于偶数字节,另一个用于奇数字节(因此可以检测丢失的字节或交换的字节),有助于防止错误。
有a discussion here on SO关于人类友好,可发音的ID可能很有趣,可发音密码(如Diceware)的工作有些相关。
Metafilter还有a discussion代码,这些代码易于人类复制,提供了一些更有趣的参考资料。