如何在节点js中使用ECDH生成Curve 25519密钥对?

问题描述

我想用 ECDH 生成一个 Curve25519 密钥对,以进行加密和解密。我正在使用 Crypto 节点模块来生成密钥对。

但是,我无法使用ECDH算法生成密钥对。

NodeJS

const { publicKey,privateKey } = crypto.generateKeyPairsync('x25519',{

publicKeyEncoding: {
   type: 'spki',format: 'pem'
},privateKeyEncoding: {
    type: 'pkcs8',format: 'pem',}
});

输出

{
    "publicKey": "-----BEGIN PUBLIC KEY-----\nMCowBQYDK2VuAyEAR+Bv9DCDFDYih5wHHLp5CALMyUv6AmpuO0lEQkvNMQ8=\n-----END PUBLIC KEY-----\n","privateKey": "-----BEGIN PRIVATE KEY-----\nMC4CAQAwBQYDK2VuBCIEIMiiTraPY1IO/4m0wV8y4LZgnFy70xR8c8s3nmmxTSFT\n-----END PRIVATE KEY-----\n"
}

这是使用 bouncycastle

的Java代码之一

https://github.com/gsasikumar/forwardsecrecy

Java代码输出

{
  "privateKey": "-----BEGIN PRIVATE KEY-----MIICRwIBADCB6gYHKoZIzj0CATCB3gIBATArBgcqhkjOPQEBAiB/////////////////////////////////////////7TBEBCAqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqYSRShRAQge0Je0Je0Je0Je0Je0Je0Je0Je0Je0Je0JgtenHcQyGQEQQQqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq0kWiCuGaG4oIa04B7dLHdI0UySPU1+bXxhsinpxaJ+ztPZAiAQAAAAAAAAAAAAAAAAAAAAFN753qL3nNZYemmaXPXT7QIBCASCAVMwggFPAgEBBCAOeSuzq+O1tPlhPZj4KZdfAq5Z0+yca15ukbUuwsyJQKCB4TCB3gIBATArBgcqhkjOPQEBAiB/////////////////////////////////////////7TBEBCAqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqYSRShRAQge0Je0Je0Je0Je0Je0Je0Je0Je0Je0Je0JgtenHcQyGQEQQQqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq0kWiCuGaG4oIa04B7dLHdI0UySPU1+bXxhsinpxaJ+ztPZAiAQAAAAAAAAAAAAAAAAAAAAFN753qL3nNZYemmaXPXT7QIBCKFEA0IABG56w6jtAyb2T6oguKNN6HvLPQdT0Mms8gCepW51pobrDT/WfXJKfFr5fRuNalS+YkDQggoc7xtpYFin0ELidYw=-----END PRIVATE KEY-----","errorInfo": null,"KeyMaterials": {
    "cryptoAlg": "ECDH","curve": "curve25519","params": "","DHPublicKey": {
      "expiry": "2020-10-15T11:29:20.848Z","Parameter": "","keyvalue": "-----BEGIN PUBLIC KEY-----MIIBMTCB6gYHKoZIzj0CATCB3gIBATArBgcqhkjOPQEBAiB/////////////////////////////////////////7TBEBCAqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqYSRShRAQge0Je0Je0Je0Je0Je0Je0Je0Je0Je0Je0JgtenHcQyGQEQQQqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq0kWiCuGaG4oIa04B7dLHdI0UySPU1+bXxhsinpxaJ+ztPZAiAQAAAAAAAAAAAAAAAAAAAAFN753qL3nNZYemmaXPXT7QIBCANCAARuesOo7QMm9k+qILijTeh7yz0HU9DJrPIAnqVudaaG6w0/1n1ySnxa+X0bjWpUvmJA0IIKHO8baWBYp9BC4nWM-----END PUBLIC KEY-----"
    }
  }
} 

有人可以指导我吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)