TypeError: 'sage.rings.integer.Integer' object has no attribute '__getitem__'

TypeError: 'sage.rings.integer.Integer' object has no attribute '__getitem__'

我正在尝试在 DES 算法的 sbox 上实施差分密码分析,但收到此错误。 到目前为止,这是我的代码:

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])]]

s1是单维列表

s1[ZZ('0b'+j[0]+j[5])][ZZ('0b'+j[1]+j[2]+j[3]+j[4] )] 正在尝试索引到索引的 return。

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() 中发生了什么的情况下的最佳猜测。