安装:npm install jsencrypt
安装:npm install js-base64组件:demo.vue
<template></template> <script> import { SM4Encrypt,SM4Decrypt } from '@/assets/des.js' import testImportJson from '@/assets/data.json' export default { data() { return { jsonData: testImportJson, }; }, created() { this.setEncryptDecrypt() }, methods: { setEncryptDecrypt(){ // let str = "测试传字符串" let str = this.jsonData//测试json数据加密 let jiami = SM4Encrypt(str); console.log('加密:',jiami); let jiemi = SM4Decrypt(jiami); console.log('解密:',jiemi); } }, }; </script>des.js
import { JSEncrypt } from 'jsencrypt' const Base64 = require("js-base64").Base64 // 公钥 var pubKey = "-----BEGIN PUBLIC KEY-----" + "您的公钥" + "-----END PUBLIC KEY-----"; // 私钥 var priKey = "-----BEGIN RSA PRIVATE KEY-----" + "您的私钥" + "-----END RSA PRIVATE KEY-----" // 分段拼接符 const $splitStr = "[montage@]" // 实例化一个RSA对象 var encrypt = new JSEncrypt(); // 设置公钥和私钥 encrypt.setPublicKey(pubKey); encrypt.setPrivateKey(priKey); /** * [rsaEncryptSet 文本加密] * @param {[type]} content 待加密文本 * JSON转换 ——> Base64转换 ——> encrypt加密(分段加密) */ export const rsaEncryptSet = (content) => { if (content == undefined) return let jsonContent = JSON.stringify(content); // JSON转换 let newText = Base64.encode(jsonContent); // Base64转换 let textEncrypt = ''; //加密文本 let maxLength = 100; //分段长度 if(newText.length>maxLength){ let newArr = newText.match(/.{1,100}/g); //文本分段 数组 for (let i = 0; i < newArr.length; i++) { let encryptStr = encrypt.encrypt(newArr[i]); //分段 加密 textEncrypt = textEncrypt ? textEncrypt + $splitStr + encryptStr : encryptStr //拼接 加密字符串 } }else{ textEncrypt = encrypt.encrypt(newText);// 加密 } // console.log('加密:',textEncrypt) return textEncrypt } /** * [rsaDecryptSet 文本解密] * @param {[type]} content 待解密密文 * encrypt解密(分段解密) ——> Base64转换 ——> JSON转换 */ export const rsaDecryptSet = (content) => { if (content == undefined) return let contentDecrypt = '' if(content.includes($splitStr)){ let newArr = content.split($splitStr) //文本分段 数组 for (let i = 0; i < newArr.length; i++) { let decryptStr = encrypt.decrypt(newArr[i]); //分段 解密 contentDecrypt += decryptStr //拼接 解密字符串 } }else{ contentDecrypt = encrypt.decrypt(content);//解密 } let Base64Decrypt = Base64.decode(contentDecrypt); //Base64转换 let decryptData = null //解密数据 if (typeof(Base64Decrypt) === 'string') { try{ decryptData = JSON.parse(Base64Decrypt) // JSON转换 }catch(error){ decryptData = Base64Decrypt } } // console.log('解密:',decryptData) return decryptData }
标签:加密,-----,解密,js,content,let,vue2,encrypt,jsencrypt From: https://www.cnblogs.com/yj-ang3141/p/17982897