在vue2中将数据加密并打包成压缩包

一、下载插件

npm install @zip.js/zip.js
npm install crypto-js
npm install file-saver

二、将数据加密与解密

1.将数据加密

var key = CryptoJS.enc.Utf8.parse('key');
var iv = CryptoJS.enc.Utf8.parse('iv');
var encrypted = CryptoJS.AES.encrypt("Hello, this is a secret message!", key, {
        iv: iv,
       mode: CryptoJS.mode.CBC,
       padding: CryptoJS.pad.Pkcs7
    });
var encryptedString = encrypted.toString();

2.将数据解密

let decryptString = CryptoJS.AES.decrypt(encryptedString, key, {
            iv: iv,
            mode: CryptoJS.mode.CBC,
            padding: CryptoJS.pad.Pkcs7
     }).toString(CryptoJS.enc.Utf8)

3.将文件进行加密

  const reader = new FileReader();
        reader.onload = async (e) => {
            const content = e.target.result;
            // 使用CryptoJS加密内容
            var encrypted = CryptoJS.AES.encrypt(content, key, {
                iv: iv,
                mode: CryptoJS.mode.CBC,
                padding: CryptoJS.pad.Pkcs7
            });
            var encryptedContent = encrypted.toString();
        };
        reader.readAsDataURL(this.files); // 读取文件内容为文本

三、对数据与文件生产压缩包

const TEXT_CONTENT = "xxx,xxx,x,xx,xxxx"
const FILENAME = "demo.docx";
let password = "password";
const BLOB = new Blob([TEXT_CONTENT], { type: zip.getMimeType(FILENAME) });
const fileBlob = new Blob([this.files], { type: zip.getMimeType(this.files.name) });
const blobWriter = new zip.BlobWriter("application/zip");
const zipWriter = new zip.ZipWriter(blobWriter);

await zipWriter.add(FILENAME, new zip.BlobReader(BLOB), { password: password, zipCrypto: true });
await zipWriter.add("demo.txt", new zip.TextReader("hello world"), { password: password, zipCrypto: true });
await zipWriter.add(this.files.name, new zip.BlobReader(fileBlob), { password: password, zipCrypto: true });
const blob = await zipWriter.close();

FileSaver.saveAs(blob, 'encrypted.zip');  // 下载文件

// 转换 blob 为 file对象 进行文件上传功能
const file = new File([blob], "encrypted.zip", { type: blob.type })
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容