1

epub (or zip)ファイルの暗号化と復号化に CryptoJS を使用しています。私は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.datbase64

復号化

  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 暗号化ドキュメント
4

0 に答える 0