1. 程式人生 > >node.js 實現支付寶RSA簽名

node.js 實現支付寶RSA簽名

由於工作需要,需要使用RSA演算法對資料進行簽名

1、使用支付寶的RSA工具,快速生成RSA私鑰公鑰,同時用於校驗結果
2、選擇金鑰格式以及金鑰長度
這裡我們選擇以金鑰格式PKCS8(JAVA使用),金鑰長度1024為例
3、使用node-rsa實現簽名
npm install node-rsa
4、實現簽名以及校驗簽名
  • 生成金鑰,使用RAS工具生成金鑰
    這裡寫圖片描述

  • 匯入私鑰,私鑰來源於上圖中“商戶應用私鑰”

const NodeRSA = require('node-rsa');
let userPrivateKey = `-----BEGIN PRIVATE KEY-----[你的私鑰]-----END
PRIVATE KEY-----`; const key = new NodeRSA(); key.setOptions({b: 1024, signingScheme: "sha1"});//配置金鑰長度,並設定簽名方法 key.importKey(userPrivateKey, 'pkcs8-private');//匯入金鑰並設定格式
  • 程式碼生成公鑰
const publicDer = key.exportKey('pkcs8-public');
console.log(publicDer);

輸出結果與RSA公鑰結果對比
這裡寫圖片描述

這裡寫圖片描述

結果一致

  • 使用RSA工具簽名
    這裡寫圖片描述
    請求示例引數
a=123&charset=UTF-8&method=alipay.mobile.public.menu.add&sign_type=RSA&timestamp=2014-07-24 03:07:50&version=1.0

注意:引數中charset和sign_type對應工具中的字符集和簽名方式

  • 程式碼實現簽名
let text = '[簽名字串]';
let buffer = Buffer.from(text);
let signature = key.sign(buffer).toString('base64');
console.log(signature);
  • 簽名結果對比
    程式碼結果
    RSA工具結果

    結果一致

完整程式碼

const NodeRSA = require('node-rsa');
let userPrivateKey = `-----BEGIN PRIVATE KEY-----MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAKM4jTMTftwr3Vtk1LxCY8Nqlmk3WQa7FecvizcMIxgGjg2pQg4ZFOahKxv4VgrjUtgctgIsVebVDcCBxkyPEKYYjFyT20Ez6wcuYsI30lJCJOK7iTw/8QtvkJBrRZhVEYkiSSb9EBG+xuHA3H0nRn/XxRhZTMdNozki1nXNNl2pAgMBAAECgYAuCOEqKrF4/5YrFME7Z64ji4honIerclC3J52oJPAw8ohWKgrLVx+h/IrgFKaP45WWBmL/Men4dNawGOoI5cDX4zf+H7cOFAIVg+0SEqODAiHHYj6aQ+P6qTPJEshmA6DNcjpliuvEACFcg+m4w2NjRN3jeNTBAnhg11WbxKIUQQJBAO0jyJ0FUr7TONXVtjFZC3tSsjv8r3BUjfcuY1tOfusWQQpLMtENOeaY4mjoVkGynDHc/ZiZd8zHsQjB9P238BUCQQCwM8OOZEhiJOog5PAbq3IFTO7nuj9UCjNik+SetXCq3tjPXaGqBrxsWpW8I9diKyXYv0VC/xI+FQut2fVlGghFAkAbjs0BclzrUCCKuQszMOXkrveHgRXiN/FHiFyDf9u/9hYY3CRLpv3TjnDBQD7F47vDD6to0Gzbn1kza1bNJVMBAkEAoRxzrvsbBEJkofczZNl6xEX4HII77Yf2PCimXkfg4RwqelFOxLysBRc+2mybP/PcAzfBCOVZtNJhf3FP5EXNUQJBAMiXPbZ30X/EdAkIGk+cLjzlf2QiOTsKMNY46mzRZV93TziIK3yjtxQozSoZxu4+qKqDKtgpRqw/wCvhTYBBJx0=-----END PRIVATE KEY-----`;
const key = new NodeRSA();
key.setOptions({b: 1024, signingScheme: "sha1"});
key.importKey(userPrivateKey, 'pkcs8-private');//匯入金鑰並設定格式
const publicDer = key.exportKey('pkcs8-public');
console.log(publicDer);

let text = 'a=123&charset=UTF-8&method=alipay.mobile.public.menu.add&sign_type=RSA&timestamp=2014-07-24 03:07:50&version=1.0';
let buffer = Buffer.from(text);
let signature = key.sign(buffer).toString('base64');
console.log(signature);

module.exports = app;

相關推薦

node.js 實現支付RSA簽名

由於工作需要,需要使用RSA演算法對資料進行簽名 1、使用支付寶的RSA工具,快速生成RSA私鑰公鑰,同時用於校驗結果 2、選擇金鑰格式以及金鑰長度 這裡我們選擇以金鑰格式PKCS8(JAVA使用),金鑰長度1024為例 3、使用node-rsa實現

Node.js實現支付H5支付

1、      建立支付應用 1.1、根據需要選擇介面型別,這裡選擇支付應用。   1.2、選擇使用環境   1.3、簽約當面付(線下支付) 2、      使用alipay-sdk 2.1、 引入服務端SDK模組 npm i alipay-sdk 2.2、 配置app資訊 var AlipaySdk

Node.js接入支付(螞蟻金服)支付

最近專案(Android和Ios)中需要接入付費功能(支付寶和微信),下面就先來介紹下接入支付寶的流程。文章主要分為三大塊:第一塊是如何在螞蟻金服的開放平臺建立一個應用並且配置開發選項。第二塊是node端接入支付功能生成前端支付需要的引數(私鑰簽名)。第三塊是node端對支付

支付 rsa 簽名-客戶端支付

最近做IOS和服務端的支付寶支付聯調,花了1天多時間,在證書籤名部分浪費了不少時間,也怪支付寶文件沒有完全說清楚,現在自己整理一下,希望對以後遇到這個問題的朋友有幫助。 步驟: 生成公司的私鑰+公鑰對,方法在文件中,注意,IOS和Android客戶端使用的簽名證書採用

HTML+CSS+JS簡單實現支付付款界面效果

6.5 body pre -c css brush ges line col HTML+JS部分 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8">

支付 RSA和RSA2簽名演算法區別

RSA和RSA2簽名演算法區別更新時間:2018-02-07 新建應用只支援RSA2簽名方式,目前已使用RSA簽名方式的應用仍然可以正常呼叫介面,詳情請見開放平臺介面簽名方式升級公告。 什麼是數字簽名? 一個很好的說明文件可以參考What is a Digital Signature?,

ASP.NET實現支付接口功能

接口 系統 func error 程序 dex ges img user 最近做系統,需要實現在線支付功能,毫不猶豫,選擇的是支付寶的接口支付功能。這裏我用的是即時到帳的接口,具體實現的步驟如下: 一、下載支付寶接口包 下載地址:

[js高手之路]Node.js實現簡易的爬蟲-抓取博客所有文章列表信息

r.js 目錄 ref 抓取 {} attr 視頻 json clist 抓取目標:就是我自己的博客:http://www.cnblogs.com/ghostwu/ 需要實現的功能: 抓取博客所有的文章標題,超鏈接,文章摘要,發布時間 需要用到的庫: node.js自帶的h

php實現支付授權登錄

gin mem pau info redirect direct ember csrf攻擊 登錄 第一步: 登錄到螞蟻金服開放平臺 https://open.alipay.com/platform/home.htm,前提是有商戶號。創建應用之後,然後到開發者中心開通對應功

node.js實現圖片上傳(包含縮略圖)

http close path return new tde log img thumb 圖片上傳 使用multiparty插件實現上傳 安裝multiparty npm i --save multiparty 代碼實現 const multiparty = requi

Python實現支付在線支付

mic code 找到 IT gpo .html 折騰 功能 title 最近在做支付寶功能,折騰了半天,終於找到解決辦法!現將鏈接貼在這裏http://www.mamicode.com/info-detail-2212321.htmlPython實現支付寶在線支付

Spring MVC+Spring+Mybatis實現支付支付功能(圖文詳解)

通用 ltr 由於 題解 urn ipa 源代碼 ram abi 前言 本教程詳細介紹了如何使用ssm框架實現支付寶支付功能。本文章分為兩大部分,分別是「支付寶測試環境代碼測試」和「將支付寶支付整合到ssm框架」,詳細的代碼和圖文解釋,自己實踐的時候一定仔細閱讀相關文

Four-operations: 使用node.js實現四則運算程序

任務 stand 設計 soft war 文檔 代碼規範 node 項目 一. 項目基本信息 項目成員: 陳旭欽, 郭鵬燕 項目倉庫: https://github.com/Yanzery/Four-operations 二. PSP2.1表格 PSP2.1 Pers

js模擬支付傳送簡訊驗證碼&&&&簡訊倒計時

html <div class="pwdContent"> <div class="pwdBox"></div> <div class="pwdErrorPoint">請輸入數字!</div></div>js // 簡訊驗

Auto.js支付篇):螞蟻森林自動收取能量和偷取能量

說在前面 對於螞蟻森林,我有一段時間沒有玩,後來被人超了。然後,我又開始偷取,每天定鬧鐘,每天走步數。相信不是土豪,還想成為排行榜的第一。肯定也像我一樣(幼稚),O(∩_∩)O哈哈~ 當然,作為一名還沒入門的程式猿,“懶”便讓我想起了如何“偷懶”。 首先宣告,程式碼部分不是本人所寫,

node——8-node.js 實現 apache 功能

初步實現 apache 功能 var http = require('http'); var fs = require('fs'); // 任意目錄地址 var wwwDir = 'E:/desk/my-pro/QD-practice/node/2/www'; // 1. 建立

JS處理支付和微信(同步提交/非同步提交)方式

PHP交流群:294088839 Python交流群:652376983 GO交流群:874512552 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title&

JAVA實現支付提現到個人賬戶

前言:需求是使用者將平臺上的餘額提現到支付寶 一、申請開發者賬號APPID、商戶私鑰、支付寶公鑰-開發者平臺:https://docs.open.alipay.com-注意:商戶私鑰支付寶平臺下載工具自動生成 二、引入SDK工具包:com.alipay.sdk:alipay-sdk-java:3.4.49

微信小程式推廣二維碼海報Node.js實現

引言 最近公司的微信小程式專案由於業務需求需要實現二維碼推廣海報,而小程式的服務端程式碼是用node.js實現的,由於是第一次使用node.js作為服務端來實現圖片的相關處理,不免走了一些坑。所以為了避免大家也像我一樣花費不必要的時間爬坑,就將我再開發過程中遇到的一些過程記錄下來,供大家參考,水平有限,請相

html5 websocket + node.js 實現網頁聊天室

1 client:    socket.io    server:   node.js +  express  + socket.io   一個簡單的聊天室  demo,沒有註冊,內建了一些測試使用者