Используйте шифрование и дешифрование RSA в VUE для подписи и отмены подписи

Vue.js

Что такое РСА

Алгоритм шифрования RSA является наиболее часто используемым алгоритмом асимметричного шифрования, который можно использовать как для шифрования, так и для цифровой подписи.

использовать шифрование в vue

Сначала представьте jsencrypt

npm install jsencrypt --save

Представлено в main.js

import JsEncrypt from 'jsencrypt'
Vue.prototype.$jsEncrypt = JsEncrypt

Инкапсулируйте методы шифрования и дешифрования в общие js

let publicKey = '这里是封装的公钥'
let privateKey = '这里是封装的私钥'
//加密方法
  RSAencrypt(pas){
    //实例化jsEncrypt对象
    let jse = new JSEncrypt();
    //设置公钥
    jse.setPublicKey(publicKey);
    // console.log('加密:'+jse.encrypt(pas))
    return jse.encrypt(pas);
  },
  
//解密方法
  RSAdecrypt(pas){
    let jse = new JSEncrypt();
    // 私钥
    jse.setPrivateKey(privateKey)
    // console.log('解密:'+jse.decrypt(pas))
    return jse.decrypt(pas);
  },

Использование подписи в vue

Для подписи необходимо ввести jsrsasign

npm install jsrsasign --save

Представлено в main.js

import Jsrsasign from 'jsrsasign'
Vue.prototype.$jsrsasign = Jsrsasign

Определите метод подписи и отмены подписи в инкапсулированном js

// 加签(用自己的私钥对signData进行签名)
  signature (signData) {
    // 私钥加签
    let signPrivateKey = '-----BEGIN PRIVATE KEY-----这里是私钥-----END PRIVATE KEY-----';
    let sig = new KJUR.crypto.Signature({"alg": "SHA1withRSA", "prov": "cryptojs/jsrsa","prvkeypem": signPrivateKey});
    // let rsa = new KJUR()
    // rsa = KEYUTIL.getKey(privateKey)
    var hashAlg = 'sha1'; // 设置sha1
    var sign = sig.signString(signData, hashAlg); // 加签
    sign = hex2b64(sign);
    // console.log(sign)
    return sign;
  },
  
  // 验签 用公钥对签名进行验签
  verify (signData, data) {
    // signData: 加签的数据
    // data: 加签之后得到的签文
    try {
      let signPublicKey = '-----BEGIN PUBLIC KEY-----这里是公钥-----END PUBLIC KEY-----';
      let sig = new KJUR.crypto.Signature({"alg": "SHA1withRSA", "prov": "cryptojs/jsrsa","prvkeypem": signPublicKey});
      sig.updateString(signData);
      let result = sig.verify(data);
      // console.log(result)
      return result;
    } catch(e) {
      console.error(e);
    }
  }

Специальное напоминание: при подписании и проверке подписи к началу и хвосту необходимо добавить как открытый, так и закрытый ключ. -КОНЕЦ ОТКРЫТОГО КЛЮЧА----- '