加密/解密文件(CryptoJS)

时间:2018-04-09 09:40:55

标签: javascript encryption cryptojs

处理任务时#34;加密/解密文件(CryptoJS.AES)"我遇到了一个问题: 官方documentation没有描述加密和解密文件的过程。

问题是解密后文件已损坏。这是由于解密文件的解码不正确。 解密后,有必要执行代码:

decryptFile.toString(CryptoJS.enc.Utf8);

我想与你分享我的决定:

import CryptoJS from 'crypto-js';
import fs from "fs";

const key = 'SECRET_KEY',
      iv = '9De0DgMTCDFGNokdEEial'; // You must dynamically create

const encrypt = (filePath)=> {
    const dataFile = fs.readFileSync(filePath),
          dataBase64 = dataFile.toString('base64'),
          encryptFile = CryptoJS.AES.encrypt(dataBase64, key, {iv: iv}),
          buffer = new Buffer(encryptFile.toString(), 'base64');

    fs.writeFileSync(filePath, buffer);
}

const decrypt = (filePath, fileType)=> {
    const dataFile = fs.readFileSync(filePath);
    const decryptFile = CryptoJS.AES.decrypt(dataFile.toString('base64'), 
      key, {iv: iv});

     // Return data: URL
     return 'data:' + fileType + ';base64,' + 
       decryptFile.toString(CryptoJS.enc.Utf8);

    // Or save decrypt file
    // const result = decryptFile.toString(CryptoJS.enc.Utf8);
    // const buffer = new Buffer(result, 'base64');
    // fs.writeFileSync(filePath, buffer);
}

0 个答案:

没有答案