常用AES与SM2加解密使用方法

AES加密

H5使用

//aes.js网上下载放入本地文件
<script src="./aes.js"></script>

vue使用

1、加载依赖

npm install crypto-js --save-dev

2、引入

import CryptoJS from "crypto-js/crypto-js";

3、方法

/**
   * AES加密 :字符串 key iv  返回base64
   */
  Encrypt: function (word, keyStr = s, ivStr) {
    let key = KEY;
    let iv = IV;
    if (keyStr) {
      key = CryptoJS.enc.Utf8.parse(keyStr);
      iv = CryptoJS.enc.Utf8.parse(ivStr);
    }

    let srcs = CryptoJS.enc.Utf8.parse(word);
    var encrypted = CryptoJS.AES.encrypt(srcs, key, {
      iv: iv,
      mode: CryptoJS.mode.ECB,
      padding: CryptoJS.pad.Pkcs7
    });
    // console.log("-=-=-=-", encrypted.ciphertext)
    // return encrypted.ciphertext.toString()  //转16进制
    return CryptoJS.enc.Base64.stringify(encrypted.ciphertext); //转base64
  },
/*解密*/
/**
   * AES 解密 :字符串 key iv  返回base64
   *
   */
  Decrypt: function (word, keyStr = s, ivStr) {
    let key = KEY;
    let iv = IV;
    if (keyStr) {
      key = CryptoJS.enc.Utf8.parse(keyStr);
      iv = CryptoJS.enc.Utf8.parse(ivStr);
    }

    let base64 = CryptoJS.enc.Base64.parse(word);
    let src = CryptoJS.enc.Base64.stringify(base64);

    var decrypt = CryptoJS.AES.decrypt(src, key, {
      iv: iv,
      mode: CryptoJS.mode.ECB,
      padding: CryptoJS.pad.Pkcs7
    });

    var decryptedStr = decrypt.toString(CryptoJS.enc.Utf8);
    return decryptedStr.toString();
  },

SM2

1、加载依赖

npm install --save sm-crypto

2、引用

const sm2 = require("sm-crypto").sm2;
const cipherMode = 1; // 1 - C1C3C2,0 - C1C2C3,默认为1

3、方法

  // sm2加密
  encryptData(str) {
    return "04" + sm2.doEncrypt(str, publicKey, cipherMode);
  },
  // sm2解密
  decryptData(str) {
    return sm2.doDecrypt(str.substring(2), privateKey, cipherMode);
  }

//给后端(java)传值时需要在加密的密文前面加04,这样后端才能解密正确不报错;

//接口返回加密字符串解密不成功时同样可以加04尝试

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值