【发布时间】:2020-05-16 22:09:19
【问题描述】:
我从客户端向服务器发送一个请求,服务器用一个令牌响应客户端和控制器。然后,客户端接收回令牌并使用一些额外信息(客户端 IP、时间和自己的区块链地址)对令牌进行签名。之后,客户端使用自己的公钥发送签名信息。一切都很好,直到这里。
现在,控制器收到带有签名信息和公钥的消息。尝试使用即将到来的公钥和已经拥有的消息来验证此签名信息。
这是客户端部分代码:
var message = token + "," + client.address().address + "," + time + "," + my_public;
var message_buf = Buffer.from(message);
const sign = crypto.createSign('SHA256');
sign.write(message_buf);
sign.end();
const signature = sign.sign(my_private, 'hex');
var sign_pub = signature.toString() + "," + my_public.toString();
var sign_pub_buf = Buffer.from(sign_pub);
console.log("sign_pub = ", sign_pub_buf);
client.send(sign_pub_buf, sdn_port, host, function(error){
if(error){
client.close();
}
else{
console.log('Sign+Public_K has been sent to SDN !!!');
}
这是控制器部分代码:
udpsocket_sdn.on('message', function(msg, rinfo) {
console.log('Data received from CLIENT : ' ,msg);
var sig_pub = msg.toString().split(",");
var sig = sig_pub[0];
var pub = sig_pub[1];
console.log("sig = ", sig);
console.log("pub = ", pub);
var message = token + "," + rinfo.address + "," + time + "," + pub;
var message_buf = Buffer.from(message);
const verify = crypto.createVerify('SHA256');
verify.write(message_buf);
verify.end();
var isGood = verify.verify(pub, sig, 'hex');
if(isGood){
console.log('All Good');
}
else {
console.log('Nope !');
}
}
【问题讨论】:
标签: javascript node.js cryptojs verify