Расшифровка файла AES на ПК приводит к его повреждению. Те же методы работают на моем устройстве - PullRequest
0 голосов
/ 28 апреля 2018

Когда я пытаюсь расшифровать файл на моем компьютере, файл поврежден. Тот же код в Android Java прекрасно работает при шифровании и дешифровании файла. Я конвертирую файл в byte [], затем шифрую и сохраняю его. Затем загрузите сохраненный файл, расшифруйте его и сохраните снова. Шифрование и дешифрование текста работает нормально и не повреждает файл. Шифрование и дешифрование файла на ПК не приводит к его повреждению. отправка зашифрованного файла с ПК на Android не приводит к повреждению при расшифровке Android. Но когда я отправляю зашифрованный файл Android и пытаюсь расшифровать на ПК, он поврежден.

EDIT:

Код расшифровки:

    Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
    cipher.init(Cipher.DECRYPT_MODE, key); 
    byte[] byteRaw = cipher.doFinal(encrypted); 
    return byteRaw;

Я знаю, что использование ECB небезопасно по сравнению с CBC, но я делаю это как демонстрацию того, что вы можете шифровать и дешифровать файлы на Android и ПК

Вот как я могу сохранить байт в файл:

File file = new File("decrypted.jpg"); 
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file));
        bos.write(byteRaw);
        bos.flush();
        bos.close(); 

Код для шифрования и дешифрования одинаков на Android и ПК, поэтому теоретически должен работать на обоих устройствах.

Ответы [ 2 ]

0 голосов
/ 28 апреля 2018

Ну, я смущен, я передавал зашифрованные данные для сохранения из моего графического интерфейса вместо расшифрованных данных файла. Потратил почти целый день на одну ошибку, передав неверный аргумент.

Спасибо за помощь. РЕШИТЬ

0 голосов
/ 28 апреля 2018

если вы используете java для дешифрования / шифрования с использованием Jvm, вам, возможно, потребуется согласовать включение AES на виртуальной машине Java, изменив некоторые файлы jar в jvm

см. Эту ссылку , вы найдете файл README, который объяснит все, что вам нужно знать.

Привет

...