收藏
回答

求用nodejs实现SHA256 with RSA签名的代码。。。官方没有示例代码,网上也没找到

求个用nodejs实现SHA256 with RSA签名的代码。

谢谢大佬先了。

回答关注问题邀请回答
收藏

3 个回答

  • 北望沣渭
    北望沣渭
    2021-01-11
    class Rsa {
      /**
       * Encrypts text with sha256WithRSAEncryption/RSA_PKCS1_OAEP_PADDING.
       * Recommended Node Limits Version >= 12.9.0 (`oaepHash` was available), even it works on v10.15.0.
       *
       * @param {string} plaintext - Cleartext to encode.
       * @param {string|Buffer} publicCertificate - A PEM encoded public certificate.
       *
       * @returns {string} Base64-encoded ciphertext.
       */
      static encrypt(plaintext, publicCertificate) {
        return crypto.publicEncrypt({
          oaepHash: sha1,
          key: publicCertificate,
          padding: RSA_PKCS1_OAEP_PADDING,
        }, Buffer.from(plaintext, utf8)).toString(base64)
      }
    }
    


    源码可见 https://github.com/TheNorthMemory/wechatpay-axios-plugin/blob/master/lib/rsa.js

    2021-01-11
    有用 1
    回复 2
    • 张雷
      张雷
      2021-01-11
      谢谢哈!我学习学习
      2021-01-11
      回复
    • 张雷
      张雷
      2021-01-17
      /v3/pay/transactions/jsapi这个api的请求签名是直接用 Rsa.sign(message, privateKeyCertificate) 就可以了的哈?这两天试这个api的请求,一直都是sign not match
      2021-01-17
      回复
  • xnng
    xnng
    2021-08-25


    const nonceStr = Math.random().toString(36).slice(-10)
    const timestamp = (new Date().getTime() / 1000).toFixed(0)
    const message = `GET\n/v3/certificates\n${timestamp}\n${nonceStr}\n\n`
    const signature = crypto.createSign('RSA-SHA256').update(message, 'utf-8').sign(fs.readFileSync('apiclient_key.pem').toString(), 'base64')
    
    2021-08-25
    有用 4
    回复
  • 张雷
    张雷
    2021-01-11

    网上有找到点相关的加密函数,但是参数密码相关的参数意思完全不懂。。

    2021-01-11
    有用
    回复
登录 后发表内容
问题标签