Hash 为短代码选择校验和以防止键入错误

Hash 为短代码选择校验和以防止键入错误,hash,checksum,Hash,Checksum,我需要选择一种校验和算法,通过在代码末尾添加1个字符(也在[a-Z0-9]中)来检测用户何时错误输入了4个字符的[a-Z0-9]代码 对ASCII码求和并应用模是一个糟糕的解决方案,因为颠倒两个键的笔划不会引起注意 我可能会使用Fletcher算法,但我想知道是否有人知道为这个用例设计的算法(非常非常小的字节数,取决于位置) 谢谢。您可以尝试ISO 7064 Mod x,y算法。根据ISO描述: ISO/IEC 7064:2002中规定的检查字符系统可以检测(): 所有单个替换错误(单个字符替

我需要选择一种校验和算法,通过在代码末尾添加1个字符(也在[a-Z0-9]中)来检测用户何时错误输入了4个字符的[a-Z0-9]代码

对ASCII码求和并应用模是一个糟糕的解决方案,因为颠倒两个键的笔划不会引起注意

我可能会使用Fletcher算法,但我想知道是否有人知道为这个用例设计的算法(非常非常小的字节数,取决于位置)


谢谢。

您可以尝试ISO 7064 Mod x,y算法。根据ISO描述:

ISO/IEC 7064:2002中规定的检查字符系统可以检测():

  • 所有单个替换错误(单个字符替换另一个字符,例如4234替换1234)
  • 所有或几乎所有单个(局部)换位错误(两个单个字符的换位,相邻或之间有一个字符,例如12354或12543表示12345)
  • 所有或几乎所有移位错误(整个字符串向左或向右移位)
  • 双重替换错误的比例较高(同一字符串中有两个单独的单一替换错误,例如1234567的7234587)
  • 所有其他错误的高比例
您可以找到一些部分实现,如:

  • (包括几种校验和算法的Java和Javascript实现)
  • (解释并包括VC实现)
例如,您可以使用ISO 7064 Mod 37,36,它可以使用0-9和A-Z(数据和检查字符)。算法的详细描述(如果您不想购买ISO)可在以下内容中找到:

  • (用于动物识别)
  • (音乐行业也使用)
  • (其他传媒公司)

您链接的帖子的可能副本是关于为机器创建的长数据块生成校验和。这里的海报要求使用一个验证字符/数字,用于人工输入(不同的校验和族)。先生,你让我开心了!谢谢,看起来它非常适合我的问题。