如何在NodeJS中生成不需要PEM密钥格式的ECDSA标志?

时间:2017-04-21 22:21:27

标签: node.js cryptography ecdsa

我必须生成一个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格式的签名:<缓冲液30 44 02 20 56 5c 61 76 a7 17 3c 67 8d 04 54 dd d5 9a 81 3a e9 1f af a6 7e 2d 34 3e 78 78 47 fb 5e 8e 9c 79 02 20 78 a4 bb f6 20 41 7c 8c 59 1b 93 43 ...> -------大小:70

我需要解码我的标志才能进行其他操作。任何人都可以帮我这个吗?

1 个答案:

答案 0 :(得分:1)

由于没人帮忙,我用另一个模块(椭圆形)做了我想要的事情:

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});

我希望这有助于其他人。