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。誰でも助けることができますか?