У меня есть файл, зашифрованный ключом rc4.
Я получил этот ключ и хочу расшифровать его с помощью скрипта Python.
Как я могу это сделать?
У меня есть файл, зашифрованный ключом rc4.
Я получил этот ключ и хочу расшифровать его с помощью скрипта Python.
Как я могу это сделать?
После 3-секундного поиска в Google было обнаружено следующее: http://www.emoticode.net/python/python-implementation-of-rc4-algorithm.html
Модифицировал его таким образом:
import base64
data = base64.b64decode("<encrypted file contents>")
key = "<rc4 key>"
S = range(256)
j = 0
out = []
#KSA Phase
for i in range(256):
j = (j + S[i] + ord( key[i % len(key)] )) % 256
S[i] , S[j] = S[j] , S[i]
#PRGA Phase
i = j = 0
for char in data:
i = ( i + 1 ) % 256
j = ( j + S[i] ) % 256
S[i] , S[j] = S[j] , S[i]
out.append(chr(ord(char) ^ S[(S[i] + S[j]) % 256]))
print ''.join(out)
Не уверен, что это сработает, поскольку вы не предоставили нам никаких данных для работы. В следующий раз, пожалуйста, опубликуйте пример данных, код, который вы уже пробовали, и какие ошибки вы получаете.
import base64
with open("/path/to/file.txt", "r") as encrypted_file:
data = base64.b64decode(encrypted_file.read())
key = "<rc4 key>"
S = range(256)
j = 0
out = []
#KSA Phase
for i in range(256):
j = (j + S[i] + ord( key[i % len(key)] )) % 256
S[i] , S[j] = S[j] , S[i]
#PRGA Phase
i = j = 0
for char in data:
i = ( i + 1 ) % 256
j = ( j + S[i] ) % 256
S[i] , S[j] = S[j] , S[i]
out.append(chr(ord(char) ^ S[(S[i] + S[j]) % 256]))
decrypted_text = ''.join(out)
with open('decrypted.txt', 'w') as decrypted_file:
decrypted_file.write(decrypted_text)
with open('/path/to/file.txt', 'r') as encrypted_file:
- person nivix zixer; 13.04.2015
openssl enc -d -base64 -in <copy_paste_data_here> -out binary_data
- person nivix zixer; 14.04.2015
PyCryptodome делает это в настоящее время: https://pycryptodome.readthedocs.io/en/latest/src/cipher/arc4.html
from Crypto.Cipher import ARC4
key = b'Very long and confidential key'
cipher = ARC4.new(key)
msg = cipher.encrypt(b'Open the pod bay doors, HAL')