使用的完整性检查是什么?

逆向工程 解密
2021-06-26 11:33:55

我有以下数字。它是一个 14 位的识别号。前 13 位数字(从左数起)是数字本身,第 14 位(最小数字)是完整性校验码。我尝试了很多组合,但未能得到完成此完整性检查的公式。

decimal, 14 dig.| hexadecimal  | binary (grouped)
--------------------------------------
//effect of the least (decimal) digit
2840115110085 6 | 19d4a885c7b8 | 1100 1110 1010 0101 0100 0100 0010 1110 0011 1101 1100
2840115110086 4 | 19d4a885c7c0 | 1100 1110 1010 0101 0100 0100 0010 1110 0011 1110 0000
2840115110087 2 | 19d4a885c7c8 | 1100 1110 1010 0101 0100 0100 0010 1110 0011 1110 0100
2840115110088 1 | 19d4a885c7d1 | 1100 1110 1010 0101 0100 0100 0010 1110 0011 1110 1000
2840115110089 9 | 19d4a885c7e3 | 1100 1110 1010 0101 0100 0100 0010 1110 0011 1111 0001
//effect of changing 7th digit from left.
2840113000000 2 | 19d4a743ce82 | 1100 1110 1010 0101 0011 1010 0001 1110 0111 0100 0001
2840114000000 1 | 19d4a7dc6501 | 1100 1110 1010 0101 0011 1110 1110 0011 0010 1000 0000
2840115000000 9 | 19d4a874fb89 | 1100 1110 1010 0101 0100 0011 1010 0111 1101 1100 0100
2840116000000 7 | 19d4a90d9207 | 1100 1110 1010 0101 0100 1000 0110 1100 1001 0000 0011
2840117000000 5 | 19d4a9a62885 | 1100 1110 1010 0101 0100 1101 0011 0001 0100 0100 0010
2840118000000 3 | 19d4aa3ebf03 | 1100 1110 1010 0101 0101 0001 1111 0101 1111 1000 0001
2840119000000 1 | 19d4aad75581 | 1100 1110 1010 0101 0101 0110 1011 1010 1010 1100 0000
2840110000000 8 | 19d4a57a0b08 | 1100 1110 1010 0101 0010 1011 1101 0000 0101 1000 0100

这是一个用于生成上述清单的小 Python 脚本:

nums = [
28401151100856, 28401151100864, 28401151100872, 28401151100881,
28401151100899, 28401130000002, 28401140000001, 28401150000009,
28401160000007, 28401170000005, 28401180000003, 28401190000001,
28401100000008,
]

def _2fmtdecimal(x):
        tmp = str(x)
        return tmp[0:13] + ' ' + tmp[13:]

def _2fmtbinary(x):
        tmp = bin(x)[2:]
        tmp2 = ''
        for i,j,k,l in zip(tmp[::4], tmp[1::4], tmp[2::4], tmp[3::4]):
                tmp2 += i+j+k+l + ' '
        return tmp2

for i in nums:
        print "%s | %s | %s" % (_2fmtdecimal(i), hex(i), _2fmtbinary(i))
1个回答

大多数完整性检查使用一些代数编码代数编码有一个基础,因此如果您有足够的样本,则可以重建所使用的代数基础。