gpt4 book ai didi

javascript - 在 Node.js 中使用 Base-64 PKCS-8 进行签名/解码

转载 作者:行者123 更新时间:2023-11-30 09:37:50 27 4
gpt4 key购买 nike

目前正在努力尝试与沃尔玛合作伙伴 API 连接,但他们的加密存在一些问题,我在 Javascript/Node 中没有找到任何对此有记录的帮助。

文档指出:

Sign the byte array representation of this data by:

Decoding the Base-64, PKCS-8 representation of your Private Key. Note that the key is encoded using PKCS-8. Libraries in various languages offer the ability to specify that the key is in this format and not in other conflicting formats such as PKCS-1.

Use this byte representation of your key to sign the data using SHA-256 with RSA.

Encode the resulting signature using Base-64.

我有私钥,并找到了有详细记录的“chilkat”包。唯一的问题是我们的开发系统是 Windows,在 Windows 10 64 位上存在问题。如果我使用 64 位,它不会识别为 64 位系统,因此我什至无法安装该软件包。

此外,chilkat 软件包似乎至少需要 Node 版本 4,我们尝试升级到 Node 4 来使用它,由于我们使用了其他一些软件包,该项目目前无法在没有一些错误的情况下使用该版本。因此,至少在这些错误得到解决之前,Node 4 不是一个选择,看来 Chilkat 已经被排除在外了……

所以我找到了另一个 NPM 包来帮助解决这个问题:https://github.com/rzcoder/node-rsa

使用该包,我在解码/签名工作时遇到问题...我发现文档非常困惑,我发现类似问题的唯一帮助是在 C# 中...

关于如何使用 node-rsa 包实现沃尔玛要求的任何建议?

最佳答案

使用node-rsa ,我能够通过两个步骤生成有效的 Walmart API 签名:

const NodeRSA = require('node-rsa');

// 1. Decode the private key with base64 then pkcs8
const key = new NodeRSA();
key.importKey(new Buffer(encodedPrivateKey, 'base64'), 'pkcs8-private-der');
const privateKey = key.exportKey();

// 2. Sign the data with the decoded private key and sha256 then encode it with base64
const data = `${consumerId}\n${url}\n${method}\n${timestamp}\n`;
const signature = new NodeRSA(privateKey, {signingScheme: 'sha256'}).sign(data).toString('base64');

关于javascript - 在 Node.js 中使用 Base-64 PKCS-8 进行签名/解码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42638068/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com