• 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"),结束。

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

    人生之旅,无尽。人生之旅,有尽。此生与您相遇便是缘分,请多指教!
  • 相关阅读:
    【题解】洛谷 P3942 将军令【20201017 CSP 模拟赛】【贪心】
    ASP.NET上传文件的三种基本方法
    Android 最火的快速开发框架XUtils
    asp.net 上传文件到一般处理程序中
    Android版本:使用findViewById()用字符串/在一个循环
    android 调用系统图库查看指定路径的图片
    Android中实现日期时间选择器(DatePicker和TimePicker)
    Android自定义ListView的Item无法响应OnItemClick的解决办法
    Android开发配置,消除SDK更新时的“https://dl-ssl.google.com refused”异常
    mysql 修改密码
  • 原文地址:https://www.cnblogs.com/aven90/p/15185829.html
Copyright © 2020-2023  润新知