vue项目 AES和国密SM4加解密封装及其如何使用

CryptoJs /ˈkrɪptəʊ/ CryptoJS是一个JavaScript的加解密的工具包。它支持多种的算法:MD5、SHA1、SHA2、SHA3、RIPEMD-160 哈希散列,进行 AES、DES、Rabbit、RC4、Triple DES 加解密。

**

第一种: AES加密解密 (ECB模式和CBC模式 )

**
utils下新建crypto.js
npm install crypto-js --save-dev

import CryptoJS from "crypto-js";

export default {
  /**
* @param {*需要加密的字符串 注:对象转化为json字符串再加密} word

* @param {*aes加密需要的key值,这个key值后端同学会告诉你} keyStr
*/
  encrypt(word, keyStr) {
    // 加密
    var key = CryptoJS.enc.Utf8.parse(keyStr);

    var srcs = CryptoJS.enc.Utf8.parse(word);

    var encrypted = CryptoJS.AES.encrypt(srcs, key, {
      mode: CryptoJS.mode.ECB,
      padding: CryptoJS.pad.Pkcs7,
    }); // 加密模式为ECB,补码方式为PKCS5Padding(也就是PKCS7)

    return encrypted.toString();
  },
  decrypt(word, keyStr) {
    // 解密
    var key = CryptoJS.enc.Utf8.parse(keyStr);
    var decrypt = CryptoJS.AES.decrypt(word, key, {
      mode: CryptoJS.mode.ECB,
      padding: CryptoJS.pad.Pkcs7,
    });
    return CryptoJS.enc.Utf8.stringify(decrypt).toString();
  },
};

使用:
main.js中

import crypto from "./utils/crypto";
Vue.prototype.$crypto = crypto;

npm install js-base64 --save

import Base64 from "base-64";
import { encryptKey } from "@/config/index";
//encryptKey是加密的秘钥,我是放在 config/index中的,这里引入
console.log('value',value);
let myVal = Base64.encode(this.$crypto.encrypt(value, encryptKey))
console.log('加密', myVal);
console.log('解密',this.$crypto.decrypt(Base64.decode(myVal), encryptKey));

**

第二种:国密SM4进行加密、解密

**
utils下新建crypto.js
npm install crypto-js --save-dev

import { encryptKey } from '@/config/index'
const SM4 = require('gm-crypt').sm4
const sm4Config = {
  key: encryptKey,
  mode: 'ecb',
  cipherType: 'base64',
}
let sm4 = new SM4(sm4Config)
export default {
  /**
   * 加密工具函数
   * @param {String} text 待加密文本
   */
  encrypt(text) {
    return sm4.encrypt(text, encryptKey)
  },
  /**
   * 解密工具函数
   * @param {String} text 待解密密文
   */
  decrypt(text) {
    return sm4.decrypt(text, encryptKey)
  },
}

使用:
main.js中:

import crypto from "./utils/crypto";
Vue.prototype.$crypto = crypto;

// 加密userName

// npm install js-base64 --save
import Base64 from "base-64";
let userName = Base64.encode(this.$crypto.encrypt(userName)),
//解密: let copUserName = this.$crypto.decrypt(Base64.decode(userName))
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值