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