我可以使用哪些算法来生成简单的人类可读容错字符串?

时间:2014-10-30 10:06:35

标签: algorithm search fault-tolerance fuzzy-comparison

人类犯错误。 当您需要它们提供一些识别某个实体的唯一生成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"将提供。

1 个答案:

答案 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代码,这些代码易于人类复制,提供了一些更有趣的参考资料。