我在python上找到了幾個RC4腳本。我使用了http://www.joonis.de/en/code/rc4-algorithm中的一個,我簡化了它,僅用於解密使用40byte密鑰用RC4加密的文件。如何使用十六進制值解密RC4?
testFile = 'input.xml'
key = 'Utood9dRzY2ugHYi9jl9ug2UNytIIxjk6Ptouaig'
out=file('output.xml','wb')
with open (testFile, "rb") as f:
data = f.read()
S = range(256)
j = 0
for i in range(256):
j = (j + S[i] + ord(key[i % len(key)])) % 256
S[i] , S[j] = S[j] , S[i]
for char in data:
i = 0
j = 0
i = (i + 1) % 256
j = (j + S[i]) % 256
S[i] , S[j] = S[j] , S[i]
out.write(chr(ord(char)^S[(S[i] + S[j]) % 256]))
out.close()
我知道結果應該是什麼,因爲我已經成功解密了的input.xml文件@http://rc4.online-domain-tools.com/但是當我做它通過腳本的輸出是錯誤的。
我有點不知所措。如果有人能告訴我我做錯了什麼,我會非常感謝!
我想說我可能需要找出如何編碼算法來處理十六進制值與整數,但它似乎pythons已經有它的十六進制。但我不太確定。
鏈接TESTFILE = http://bayfiles.net/file/1kPgD/bVuyGw/input.xml
這關鍵是Base64編碼。在做任何解密之前,您需要解碼它。 – roippi 2014-09-19 04:17:22
其實它沒有編碼。我已經測試過了。 – clrx 2014-09-19 08:41:17