基于RSA+AES实现前后端(VUE+PHP)参数加密传输

2021/6/1 20:23:00

本文主要是介绍基于RSA+AES实现前后端(VUE+PHP)参数加密传输,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

实现原理:

前端篇

引入第三方组件,jsencrypt提供RAS加密,crypto-js提供AES加密

npm install jsencrypt
npm install crypto-js
import CryptoJs from "crypto-js"
import JsEncrypt from "jsencrypt"

export default {
  /**
   * AES加密
   * word 待加密字符串
   * key  十六位十六进制数AES秘钥
   */
  aesEncrypt(word, key){
    let encrypted = CryptoJs.AES.encrypt(CryptoJs.enc.Utf8.parse(word), CryptoJs.enc.Utf8.parse(key), {
      iv: CryptoJs.enc.Utf8.parse("012345679ABCDEF"),
      mode: CryptoJs.mode.CBC,
      padding: CryptoJs.pad.Pkcs7,
    });
  }

  /**
   * RSA加密
   * word 待加密字符串
   * rsaPubKey RSA公钥
   */
  rsaEncrypt(word, rsaPubKey){
    let jse = new JsEncrypt();
    jse.setPublicKey(publicKey);
    return jse.encrypt(word);
  }

  /**
   * AES随机秘钥
   */
  aesRandomKey(){
    let charStr = "012345679abcdefABCDEF";
    let randomKey = "";
    for (var i = 0; i < 16; i++) {
      randomKey += charStr[parseInt(Math.random() * charStr.length)];
    }
    return randomKey;
  }   

  /**
   * RSA公钥,由后端提供或通过接口动态获取
   */
  rsaPubKey(){
    return "xxx";
  }
}

实现

let word = "test";
let aesKey = aesRandomKey();
let rsaPubKey = rsaPubKey();

axios.post("xxx", {
  wordEn: aesEncrypt(word, aesKey), // 参数密文
  aesKeyEn: rsaEncrypt(aesKey, rsaPubKey), // AES秘钥密文
});


这篇关于基于RSA+AES实现前后端(VUE+PHP)参数加密传输的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程