VUE RSA参数加解密

1.对称加密

推荐使用crypto这个没什么好说的网上资料很多。

2.非对称加密

RSA加密网上大多使用的是jsencrypt但在这里需要说的是不推荐!不推荐!不推荐

主要原因如下:

1.长字符串解密报错或者直接返回null解析不了。需要单独引入encryptLong拓展进行分段解密。

2.拓展包的分段解密部分文字出现乱码,导致json串无法转换为json对象。

所以不推荐jsencrypt进行RSA进行加解密。

本文主要讲使用通过node-rsa进行RSA加解密,也是找半天资料找到的方法,度娘不知道怎么了没用的一大堆简直是没法用.

1.引入node-rsa

    npm install node-rsa

2.用就简单了直接上代码块:

如果有不明白的可以直接看官方文档:https://www.npmjs.com/package/node-rsa

//引入node-rsa
const NodeRSA = require('node-rsa');

export default {
  /**
   * RES 参数加密
   * @param data 需加密参数
   * @param rsaKey rsa公钥或私钥
   * @param keyType 加解密类型公钥加解密或私钥加解密(pkcs8-public-pem或pkcs8-private-pem),
   * @param type 操作类型加密或解密,
   * @constructor
   */
  ResUtil(data, rsaKey, keyType, type) {
    let vm = this;
    if (!data) {
      return data;
    }
    if (rsaKey) {
      if (!type) {
        throw '请输入加密类型,公钥加密或私钥加密';
      }

      //创建NodeRSAd对象  输入公钥或私钥和类型
      const nr = new NodeRSA(rsaKey, keyType);
      //加解密类型  pkcs8规范
      nr.setOptions({encryptionScheme: 'pkcs1'});
      if (type == constant.common.ENCRYPT) {
        return (data instanceof Object || data instanceof Array) ? nr.encrypt(JSON.stringify(data), 'base64', 'utf8') : nr.encrypt(new String(data), 'base64', 'utf8');
      } else {
        return nr.decrypt(data, 'utf8');
      }
    } else {
      throw '请输入参数加密公钥或私钥';
    }
  },

后端直接使用的HuTool的RSA工具类:

因为在做参数加解密后台用的Springboot  做参数加解密有用过滤器的(通过HttpServletRequestWrapper重写请求参数,但这获取不到请求的方法无法使用反射机制),有使用拦截器的还有使用AOP的但都不是很理想。

最终结果是使用Spring提供的方法解析器,进行参数解析后期应该会写一篇文档单独写一下,这里就不多说了。

Hutool官方文档:https://www.hutool.cn/docs/#/crypto/%E9%9D%9E%E5%AF%B9%E7%A7%B0%E5%8A%A0%E5%AF%86-AsymmetricCrypto

//创建RSA解析对象 给上私钥和公钥  直接加解密就可以了
RSA rsa = new RSA(ConfigStatic.SYS_RSA_PRIVATE_KYE,ConfigStatic.SYS_RSA_PUBLIC_KYE);
String str2 = rsa.encryptBase64("{testkey:'test'}",KeyType.PublicKey);
System.out.println(str);

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值