一个符号校验和的算法

Algorithm for one sign checksum

我急于寻找一种算法来创建最多两个字符长的校验和,并且可以识别输入序列中的字符混淆。在测试不同的算法时,例如 Luhn、CRC24 或 CRC32,校验和总是长于两个字符。如果我将校验和减少到两个甚至一个字符,则不再识别所有换向。

有谁知道满足我需求的算法吗?我已经有了可以继续搜索的名字。非常感谢您的帮助。

考虑到你的数据是字母数字,你想检测所有的排列(在完美的情况下),并且你可以负担得起使用二进制校验和(即完整的 16 位),我猜你应该去使用 CRC-16(正如@Paul Hankin 在评论中已经建议的那样),因为与 check-digit 算法(如 相比,它更多 information-dense LuhnDamm,并且在涉及可能的错误类型时更多 "generic"。

可能类似于 CRC-CCITT (CRC-16-CCITT),您可以尝试一下 here,看看它对您有何作用.