Javascript 如何更改ECDSA的密钥长度?
最近,我试图用ECDSA的代码做一些事情。我想更改它的键长度,但徒劳。我查了一下互联网,找到了一些ECDSA的源代码,但不知怎么的,它只允许32字节 例如,我发现: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
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的范围”。这是否意味着我需要使用单独的代码,并为每个键长度数找到单独的库?通常,不是。大多数库处理多条曲线。你刚好找到一个只支持一个的。请阅读-总结是,这不是一个理想的方式来解决志愿者,可能会适得其反获得答案。请不要将此添加到您的问题中。