zoukankan      html  css  js  c++  java
  • uniapp使用RSA签名

    应项目需求,将请求数据进行签名,后端接口进行验签。后端接口提供签名私钥,使用SHA256withRSA进行签名。对于js进行RSA签名,这个内容其实很早就有相关库了,大部分应该使用的都是jsrsasign。

    1. 下载jsrsasign库,npm install jsrsasign走起,在项目根目录下node_modules此时应该存在jsrsasign目录了,我们所需要的资源都已经在里面了;

    2. 看了下里面的资源,就lib文件夹下的jsrsasign.js是主要文件,于是便拷贝了该文件出来,再次对其包装下;

    3. 签名主要用到KJUR,hextob64

    const {
    	KJUR,hextob64
    } = require('@/common/jsrsasign/lib/jsrsasign');
    

    4. 私钥,因为后端接口调用的时候不需要传入pem的begin和end部分,所以为了统一,给到的也是不带begin和end部分的字符串,由前端进行处理:

    const strPrivateKey="xxxxxx";
    const privateKey=`-----BEGIN PRIVATE KEY-----
    ${strPrivateKey}
    -----END PRIVATE KEY-----`;

    5.签名处理

    const rsaSign = (content, privateKey) => {
        // 创建 Signature 对象
        const signature = new KJUR.crypto.Signature({
            alg: "SHA256withRSA",
              //私钥pem! 
              prvkeypem: privateKey 
            });
         signature.updateString(content);
         const signData = signature.sign();
         // 将内容转成base64 
         return hextob64(signData)
         // return signData; 
    }

    6. 整个代码如下

    const {
        KJUR,hextob64
    } = require('@/common/jsrsasign/lib/jsrsasign');
    
    const rsaSign = (content, privateKey) => {
        // 创建 Signature 对象
        privateKey=`-----BEGIN PRIVATE KEY-----
    ${privateKey}
    -----END PRIVATE KEY-----`;
        const signature = new KJUR.crypto.Signature({
            alg: "SHA256withRSA",
            prvkeypem: privateKey
        })
        signature.updateString(content)
        const signData = signature.sign()
        // 将内容转成base64
        return hextob64(signData)
        // return signData;
    }
    module.exports = {
        rsaSign
    }

    7.请求rsaSign,组装成url键值对字符串,rsaSign("xxxx","xxxx"),结束。

    如有不对的地方,请各位大佬指出,不胜感激

    人生之旅,无尽。人生之旅,有尽。此生与您相遇便是缘分,请多指教!
  • 相关阅读:
    Java中@Override注解的作用
    JAVA8 双冒号::的作用
    JAVA8 Stream
    梯度下降法推导,凸函数,收敛性推导
    Maven基础
    Openflow协议详解
    KeepAlive--高可用解决方案
    Spring Cloud Alibaba:Seata基础知识
    Spring Cloud Alibaba:Sentinel初始化监控和流控
    Spring Cloud Alibaba:Nacos配置中心
  • 原文地址:https://www.cnblogs.com/aven90/p/15185829.html
Copyright © 2011-2022 走看看