这是我的代码:
def KSA(key):
key_length = len(key)
S = list(range(256))
j = 0
for i in range(0,255):
j = (j + S[i] + key[i % key_length]) & 256
print(S[i],S[j])
S[i] , S[j] = S[j] , S[i] # Swapping
return S
与 key = [5] 一起使用时列表索引超出范围。我不知道为什么。
您的代码中有两个错误。您使用 & 而不是 % 来模 256,但您的密钥长度部分却是正确的。并且您还应该使用 range(256) 而不是 range(0, 255),因为它只会达到索引 254(该参数实际上是 RANGE 而不是显式停止点)。