制作RC4算法,KSA(密钥调度算法)的问题

问题描述 投票:0回答:1

这是我的代码:

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] 一起使用时列表索引超出范围。我不知道为什么。

python rfc
1个回答
0
投票

您的代码中有两个错误。您使用 & 而不是 % 来模 256,但您的密钥长度部分却是正确的。并且您还应该使用 range(256) 而不是 range(0, 255),因为它只会达到索引 254(该参数实际上是 RANGE 而不是显式停止点)。

© www.soinside.com 2019 - 2024. All rights reserved.