CRC算法产生小于16位的值

时间:2014-12-03 20:06:19

标签: algorithm checksum crc

对于人性化的"校验和" value我想生成0到99范围内的值。

输入是一串ASCII字符(主要是a-z和0-9)。

我认为我应该使用某种CRC算法,但我想知道如何通过均衡的校验和结果获得最佳结果。

我能想象的最便宜的技术是计算CRC-16或CRC-32,然后以100为模的结果。但这不是一个好的结果,是吗?

理想情况下,用于校验一组N个不同值中的一串值的好(类CRC)算法(例如,如果我仅使用az和0-9,则N = 36),从而产生校验和范围为0到M-1?

当我处理小字符串时,它不必快速。

1 个答案:

答案 0 :(得分:1)

循环冗余校验可以使用任意数量的输出位完成,因此您可以使用CRC-8之类的值来获取0到255之间的值(可以用两个十六进制字符表示)。有关CRC的详细信息,请参阅wikipedia link

至于采用CRC-32模100没有给出好的结果,这取决于你的考虑"好"。对于仅100个哈希值,无论如何都必然会发生冲突,因此您需要权衡哈希长度与冲突风险。