我正在尝试在sbox上为DES算法实现差分密码分析,我收到了这个错误。 到目前为止,这是我的代码:
s1=[14, 4, 13, 1, 2, 15, 11, 8, 3, 10, 6, 12, 5, 9, 0, 7,
0, 15, 7, 4, 14, 2, 13, 1, 10, 6, 12, 11, 9, 5, 3, 8,
4, 1, 14, 8, 13, 6, 2, 11, 15, 12, 9, 7, 3, 10, 5, 0,
15, 12, 8, 2, 4, 9, 1, 7, 5, 11, 3, 14, 10, 0, 6, 13]
b=[]
for i in range(0, 63):
j=ZZ(i).binary().zfill(6)
b += [s1[ZZ('0b'+j[0]+j[5])][ZZ('0b'+j[1]+j[2]+j[3]+j[4])]]
s1=mq.SBox(b)
ddt=s1.difference_distribution_matrix()
for i in range(63):
print i,ddt[i]
错误已开启
b += [s1[ZZ('0b'+j[0]+j[5])][ZZ('0b'+j[1]+j[2]+j[3]+j[4])]]
答案 0 :(得分:1)
s1是单个维度的列表。
S1 [ZZ(' 0B' + J [0] + J [5])] [ZZ(' 0B' + J [1] + J [2] + J [3] + j [4])]试图索引索引的返回。
s1 [ZZ(' 0b' + j [0] + j [5])]将s1中的整数值拉回到位置[ZZ(' 0b' + j [ 0] + J [5])。
然后你试图索引位置[ZZ(' 0b' + j [1] + j [2] + j [3] + j [4])]的整数。
这是我最好的猜测,不知道ZZ()中发生了什么。