如何使用JavaScript库使用椭圆曲线破译加密消息?

如何使用JavaScript库使用椭圆曲线破译加密消息?,javascript,node.js,encryption,elliptic-curve,Javascript,Node.js,Encryption,Elliptic Curve,我发现了一个关于JavaScript的库。我已经学会了如何加密信息。但是,我没有找到如何将其解密为原始消息 加密代码: var EC = require('elliptic').ec; var ec = new EC('secp256k1'); var msg = "hello"; let myKey = ec.keyFromPrivate('29f3c33a550d3810e6b82b7b510672118aeabcf8b19e00172e4623cbf480d2b8

我发现了一个关于JavaScript的库。我已经学会了如何加密信息。但是,我没有找到如何将其解密为原始消息

加密代码:

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

let myKey = ec.keyFromPrivate('29f3c33a550d3810e6b82b7b510672118aeabcf8b19e00172e4623cbf480d2b8');
const sig = myKey.sign(msg, 'base64');
var derSign = sig.toDER('hex');
console.log (derSign)
输出:

3044022076e7fbf80454f764e346dd359eb7f2002802e68d30a689d77d6211aa2c6e9d7302201b5f35d92b8f4aefd5f69d9d21e3dfba75404e4d5a89e09239b2accf43ff6d63

我想再次将签名返回给
hello
。我怎么能做到呢?

我在中没有看到任何加密和解密函数,甚至在库的源代码中也没有。在您的演示代码中,它是签名,而不是加密消息。您可以使用
verify
验证消息是否被某些邪恶的人更改

console.log(myKey.verify(msg, derSign)); // true
console.log(myKey.verify(msg+"something_else", derSign)); // false
当输出为false时,表示消息已更改,而true表示消息未更改。这就是签名的工作原理,而不是加密或解密消息


所以,如果您想用ecc加密和解密消息,我想您可以使用这个库。

当需要椭圆曲线时,通常用ECIS加密。请记住,加密需要收件人的公钥,解密需要收件人的私钥。