В контексте этого я преобразую файл java в python и выполняю последнюю операцию. Я нахожусь примерно в 200 LO C, так что это делает его намного большим краем сиденья ...
В любом случае, в java операция:
Cipher cipher = Cipher.getInstance("AES/ecb/nopadding");
cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(keys[i], "AES"));
//doFinal(byte[] input, int inputOffset, int inputLen, byte[] output, int outputOffset)
cipher.doFinal(save, saveOffset, 16, save, saveOffset);
In python У меня есть это:
from Crypto.Cipher import AES
cipher = AES.new(bytes(keys[i]), AES.MODE_ECB)
cipher.decrypt(?????)
Это взято из пакета в decrypt ():
:Parameters:
ciphertext : bytes/bytearray/memoryview
The piece of data to decrypt.
The length must be multiple of the cipher block length.
:Keywords:
output : bytearray/memoryview
The location where the plaintext must be written to.
If ``None``, the plaintext is returned.
:Return:
If ``output`` is ``None``, the plaintext is returned as ``bytes``.
Otherwise, ``None``.
Как вы видите, .decrypt () на самом деле не имеет вход для смещений, но мне было интересно, есть ли способ обойти это?
Вот почему я решил опубликовать на SO, смогу ли я отправить:
temp_bytes = save[offset]
temp_decrypt = cipher.decrypt(temp_bytes)
save[offset] = temp_decrypt
Или когда расшифровывает ли он весь файл как контекст, и я получу неправильный вывод? Я хотел бы просто сделать это и протестировать его, но на выходе просто gibberi sh, что мне придется написать другую программу для анализа (другой проект java to python).