首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Node.js中用Base-64PKCS-8进行签名/解码

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

Stack Overflow用户
提问于 2017-03-07 00:27:33
回答 2查看 4.3K关注 0票数 1

目前正在努力与Walmart Partners建立联系,并且他们的密码学存在一些问题,而且我在Javascript/Node中没有找到任何对此有记录的帮助。

这些文件指出:

通过以下方式对此数据的字节数组表示形式进行签名: 解码基-64,PKCS-8表示您的私钥。注意,密钥是使用PKCS-8编码的。各种语言的库提供了一种能力,可以指定键是这种格式的,而不是其他冲突的格式,例如PKCS-1。 使用密钥的这个字节表示来使用RSA使用SHA-256对数据进行签名。 使用Bas-64对结果签名进行编码。

我有私钥,并找到了"chilkat“包,这是很好的记录。唯一的问题是我们的开发系统是Windows,在Windows 10 64位上有一个问题。如果我使用64位,它不会识别为64位系统,所以我甚至无法安装软件包。

另外,chilkat包似乎至少需要Node version 4,我们尝试升级到Node 4来使用这个版本,而且由于我们使用的其他包,项目目前无法使用该版本而没有一些bug。因此,至少在这些错误被解决之前,Node 4不是一种选择,似乎Chilkat已经不存在了.

所以我找到了anotehr NPM包来帮助处理这个问题:https://github.com/rzcoder/node-rsa

使用那个包,我很难让解码/签名开始工作.我发现这些文档非常令人困惑,而我在类似问题中找到的唯一帮助是在C#中.

对于如何实现沃尔玛要求的节点-rsa包,有什么建议吗?

EN

回答 2

Stack Overflow用户

发布于 2017-05-04 14:35:09

使用节点-rsa,我能够分两个步骤生成一个有效的Walmart API签名:

代码语言:javascript
复制
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');
票数 4
EN

Stack Overflow用户

发布于 2021-11-28 17:14:23

使用节点-rsa,解密的解决方案。

代码语言:javascript
复制
const NodeRSA = require('node-rsa')
var key = NodeRSA(privateKey, 'pkcs8-private-pem', {'environment': 'node', 'encryptionScheme': 'pkcs1', 'signingScheme': 'sha256'}); 
var data = key.decrypt(encrypted, 'utf-8')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42638068

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档