Javascript 如何更改ECDSA的密钥长度?

Javascript 如何更改ECDSA的密钥长度?,javascript,digital-signature,elliptic-curve,ecdsa,Javascript,Digital Signature,Elliptic Curve,Ecdsa,最近,我试图用ECDSA的代码做一些事情。我想更改它的键长度,但徒劳。我查了一下互联网,找到了一些ECDSA的源代码,但不知怎么的,它只允许32字节 例如,我发现: var crypto = require("crypto"); var eccrypto = require("eccrypto");   // A new random 32-byte private key. var privateKey = crypto.randomBytes(32); // Correspondi

最近,我试图用ECDSA的代码做一些事情。我想更改它的键长度,但徒劳。我查了一下互联网,找到了一些ECDSA的源代码,但不知怎么的,它只允许32字节

例如,我发现:

var crypto = require("crypto");
var eccrypto = require("eccrypto");     

// A new random 32-byte private key.
var privateKey = crypto.randomBytes(32);

// Corresponding uncompressed (65-byte) public key.
var publicKey = eccrypto.getPublic(privateKey);

var str = "message to sign";

// Always hash you message to sign!    
var msg = crypto.createHash("sha256").update(str).digest();

eccrypto.sign(privateKey, msg).then(function(sig) {
   console.log("Signature in DER format:", sig);
   eccrypto.verify(publicKey, msg, sig).then(function() {    
      console.log("Signature is OK");
   }).catch(function() {    
      console.log("Signature is BAD");
   });
});
从网站。我尝试将privateKey从32字节更改为16字节和其他值。它最终给了我错误

最近我发现,要获得不同的关键点长度,需要不同的曲线。有人知道如何在上面的代码中更改曲线吗?如果没有,是否有人提供可以使用ECDSA不同密钥长度的源代码

(我对ECC非常陌生,因此如果我使用了错误的术语或完全误解了它的概念,请原谅)。

根据(这看起来是代码的正确库),该库只支持
secp256k1
曲线

大多数其他库,如果没有给定除256位曲线空间之外的上下文,将假定它是
secp256r1
(r而不是k),这意味着您选择的库不能与许多库进行互操作。(例如,Windows 7、8和8.1无法使用操作系统提供的加密库执行
secp256k1


因此,对于“我如何在这个库中使用不同大小的键?”的回答是“你不能,对不起”。对于“那么我可以使用什么库?”的回答是“对不起,这超出了StackOverflow的范围”。

这是否意味着我需要使用单独的代码,并为每个键长度数找到单独的库?通常,不是。大多数库处理多条曲线。你刚好找到一个只支持一个的。请阅读-总结是,这不是一个理想的方式来解决志愿者,可能会适得其反获得答案。请不要将此添加到您的问题中。