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-----\n${strPrivateKey}\n-----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-----\n${privateKey}\n-----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"),結束。

如有不對的地方,請各位大佬指出,不勝感激

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM