NodejsはRSA署名(SHA 256 withRSA)を行います.
6027 ワード
最近はオープンプラットフォームプロジェクトをしていますが、SDKを作成する時に署名検証機能を使い、Sha 256 WithRSAを使って署名します.具体的な流れは秘密鍵を使って署名を生成し、公開鍵を使って署名を行います.
秘密鍵の署名コードを共有します.
package.json追加依頼:
秘密鍵の署名コードを共有します.
package.json追加依頼:
"dependencies": {
//
"jsrsasign": "^8.0.19",
}
完全コード:const {KJUR, hextob64} = require('jsrsasign')
const HashMap = {
SHA256withRSA: 'SHA256withRSA',
SHA1withRSA: 'SHA1withRSA'
}
const PEM_BEGIN = '-----BEGIN PRIVATE KEY-----
'
const PEM_END = '
-----END PRIVATE KEY-----'
/**
* rsa :https://www.jianshu.com/p/145eab95322c
*/
exports.SignUtil = {
/**
* rsa
* @param content
* @param privateKey ,PKCS#1
* @param hash hash ,SHA256withRSA,SHA1withRSA
* @returns ,base64
*/
rsaSign: function (content, privateKey, hash) {
privateKey = this._formatKey(privateKey)
// Signature
const signature = new KJUR.crypto.Signature({
alg: hash,
//! pem!
prvkeypem: privateKey
})
signature.updateString(content)
const signData = signature.sign()
// base64
return hextob64(signData)
},
_formatKey: function (key) {
if (!key.startsWith(PEM_BEGIN)) {
key = PEM_BEGIN + key
}
if (!key.endsWith(PEM_END)) {
key = key + PEM_END
}
return key
}
}