node.js - 如何在 NodeJS 中生成 ECDSA 签名而不需要 PEM key 格式?

标签 node.js cryptography ecdsa

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

我尝试了两种不同的形式:一种给了我一个大小为 135 的符号,另一种给了我一个大小为 70 的符号。第一个是使用 pem key (使用 asn1js and bn modules as the answer in this link )生成的,第二个是生成的使用“原始” key (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");
       });
    });

此代码的输出是:

Signature in DER format: < Buffer 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 ... > -------size: 70

我需要解码我的标志才能进行其他操作。谁能帮我解决这个问题吗?

最佳答案

由于没有人帮忙,我用另一个模块(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});

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

关于node.js - 如何在 NodeJS 中生成 ECDSA 签名而不需要 PEM key 格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43552859/

相关文章:

javascript - Forge:加密大文件

c++ - 使用 AES 进行加密++ 解密入门

java - 使用 Java keytool 生成 ECDSA key 对时选择曲线

node.js - 如何使用 Angular-Cli 创建部署到 ZIP ./dist 文件夹的过程

node.js - 从node.js加载和修改svg文件

java - 使用 BigInteger 在 Java 中手动实现 RSA

elliptic-curve - ECDSA签名长度

java - 在 Java 中生成 VAPID key 并将其传递给 JavaScript PushManager

node.js - 将多个 Node js 应用程序作为单个实例运行

drupal - 如何为 drupal 7 创建加密的哈希密码