CryptoJS AES Расшифровка не дает оригинальный файл ZIP/EPUB в реагировать родной

Я использую CryptoJS для шифрования моего epub (or zip) файл и расшифровать его. я использую react native создать приложение. Но я не знаю, почему расшифрованный файл не является оригинальным файлом epub. Ошибка при открытии расшифрованного файла epub: Error in opening zip file. И я использую react-native-fetch-blob для чтения и записи файлов.

Вот мой код:

шифрование

  encrypt() {

    // ENCRYPTION

    RNFetchBlob.fs.readFile(`${RNFetchBlob.fs.dirs.DownloadDir}/startup.epub`, 'base64')
    .then(result => {
      console.log('startup.epub read data: ', result);

      // Encrypt 
      const ciphertext = AES.encrypt(result, key);

      // Write encrypted file
      RNFetchBlob.fs.writeFile(RNFetchBlob.fs.dirs.DownloadDir + '/startup_enc.dat', ciphertext.toString(), 'base64')
      .then(() => {
        console.log('startup_enc.dat file wrtten');
        this.decrypt();
      })
      .catch(error => {
        console.log('startup_enc.dat file writing error', error);
      });
    })
    .catch(err => {
      console.log('read error: ', err);
    });
  }

Я читаю файл epub в base64 формат. Я зашифровал результат с AES как ciphertext Тогда я написал ciphertext.toString() в startup_enc.dat файл в base64 кодирование.

Дешифрирование

  decrypt() {

    //  DECRYPTION

    RNFetchBlob.fs.readFile(`${RNFetchBlob.fs.dirs.DownloadDir}/startup_enc.dat`, 'base64')
    .then(result => {
      console.log('startup_enc.dat data: ', result);

      // Decrypt
      const bytes = AES.decrypt(result, key);

      const plaintext = bytes.toString(enc.Base64);

      // Write decrypted file
      RNFetchBlob.fs.writeFile(RNFetchBlob.fs.dirs.DownloadDir + '/startup_dec.epub', plaintext, 'base64')
      .then(() => {
        console.log('startup_dec.epub file wrtten');
      })
      .catch(error => {
        console.log('startup_dec.epub file writing error', error);
      });
    })
    .catch(err => {
      console.log('read error: ', err);
    });
  }

Потом читаю зашифрованный startup_enc.dat файл в base64 кодирование. Я расшифровал файл и преобразовал в base64 формат. Тогда я написал расшифрованный plaintext в startup_dec.epub снова в base64 формат кодирования.

Размер оригинального файла epub 2.49 MBЗашифрованный файл 3.11 MB и расшифрованный файл EPUB также 3.11 MB В отличие от 2.49 MB,

Я не могу найти, где проблема, либо в encryption или в decryption процесс. Кто-нибудь может помочь?

  1. React-native-fetch-blob для потоковой передачи файлов DOCS
  2. CryptoJS AES Шифрование DOCS

0 ответов

Другие вопросы по тегам