【问题标题】:How to generate an ECDSA sign without need of PEM key format in NodeJS?如何在 NodeJS 中生成 ECDSA 签名而不需要 PEM 密钥格式?
【发布时间】:2017-04-21 22:21:27
【问题描述】:

我必须生成一个 ECDSA 符号并在之后对其进行解码。

我尝试了两种不同的形式:一个给我一个大小为 135 的标志,而另一个给我一个大小为 70 的标志。第一个是用 pem 密钥(asn1js and bn modules as the answer in this link)生成的,第二个是生成的使用“原始”键(eccrypto 模块),如下所示:

const ecdsa = require('eccrypto');
shaMsg = crypto.createHash('sha256').update(myData).digest();
ecdsa.sign(privateKey, shaMsg).then(function(sig) {
       console.log("Signature in DER format:", sig, '-------size: ', sig.length);
       ecdsa.verify(publicKey(), msg, sig).then(function() {
           console.log("Signature is OK");
       }).catch(function() {
           console.log("Signature is BAD");
       });
    });

这段代码的输出是:

DER 格式的签名: -------尺寸:70

我需要解码我的符号以进行其他操作。谁能帮我解决这个问题?

【问题讨论】:

  • “我尝试了两种不同的形式” - 这些“形式”是什么?您能否展示完整和最少的代码以及一些示例输出?
  • 我没有放代码,但我告诉了那些“表单”@Artjom:“...第一个是用 pem 密钥(asn1js 和 bn 模块)生成的,第二个是生成的使用“原始”密钥(eccrypto 模块)...”我会尽快放代码。
  • 更新的问题,@Artjom。

标签: node.js cryptography ecdsa


【解决方案1】:

由于没有人帮忙,我用另一个模块 (elliptic) 做了我想做的事:

var EC = require("elliptic").ec;
var ec = new EC("secp256k1");

var shaMsg = crypto.createHash("sha256").update(myData.toString()).digest();
var mySign = ec.sign(shaMsg, privateKey, {canonical: true});

我希望这对其他人有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-17
    • 2019-01-27
    • 2021-11-07
    • 2019-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多