node ecdh 报错Failed to translate Buffer to a EC_POINT

client端

var client = crypto.createECDH('secp256k1');
var client_key = client.generateKeys();//保存客户端公钥,公钥Pku  length=65


server端

var crypto = require('crypto');

var serverEcdh;

var serverEcdh_pubKey;

serverEcdh = crypto.createECDH('secp256k1');//secp256k1,secp521r1
serverEcdh_pubKey = serverEcdh.generateKeys();

var secret = serverEcdh.computeSecret(client_key);//共享秘钥

sever端用client端公钥生成secret共享秘钥报错,如下:

crypto.js:418

  var ret = this._handle.computeSecret(toBuf(key, inEnc));
                         ^


Error: Failed to translate Buffer to a EC_POINT
    at Error (native)

    at ECDH.dhComputeSecret [as computeSecret] (crypto.js:418:26)


出错原因client端公钥(buffer)使用ascii\base64\binary三种编码方式传输到server端,再转成buffer后,与原client端buffer不一致,出错。

解决方法:使用hex编码客户端buffer后传给server

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值