没有逻辑/按位操作的校验和

时间:2014-11-11 18:06:13

标签: algorithm checksum crc basic integer-arithmetic

我需要计算15个字节的1字节校验和。我的第一个想法是使用像crc8这样的东西,但问题是我必须使用一个非常有限的BASIC解释器,它只支持基本的算术运算(+ - * /)但没有按位" xor",&# 34;和"或"或"没有"转移"操作

所以我的问题是:是否有可能用这些限制来计算一个合理的校验和?我认为计算总和将是一个糟糕的解决方案,但我现在无法想到别的东西。

2 个答案:

答案 0 :(得分:2)

如果你有截断整数除法,你可以定义mod(a,b)= a - (a / b)* b,这几乎是http://en.wikipedia.org/wiki/Adler-32所需的全部。

答案 1 :(得分:2)

LET a = 1
LET b = 0
FOR n = 1 to 15
   LET a = a + c(n)
   LET b = b + a
NEXT n
LET b = mod(b, 251)

然后使用b作为检查值。这个简单总和的优点是它不是可交换的。字节的顺序很重要。此外,一串零不会给你零,检查值取决于多少个零。