本文最后更新于 2024-10-28T21:18:01+08:00
RC4
写题过程中会出现像rc4这种简单的对称加密算法,在此留下对应的解密脚本
由于初始化的s盒和产生的密钥流是由固定的密钥确定,并且加密的本质是异或所以为对称的
rc4加密主要分为三个部分
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| def KSA(key): key_length = len(key)
S = list(range(256)) j = 0 for i in range(256): j = (j + S[i] + key[i % key_length]) % 256 S[i], S[j] = S[j], S[i]
return S
def PRGA(S): i = 0 j = 0 while True: i = (i + 1) % 256 j = (j + S[i]) % 256 S[i], S[j] = S[j], S[i] K = S[(S[i] + S[j]) % 256] yield K
def RC4(key, data): S = KSA(key) keystream = PRGA(S) res = [] for c in data: res.append(c ^ next(keystream)) return bytes(res)
|