Javascript 节点js验证加密消息

Javascript 节点js验证加密消息,javascript,node.js,cryptojs,verify,Javascript,Node.js,Cryptojs,Verify,我从客户机向服务器发送一个请求,服务器用令牌将响应返回给客户机和控制器。然后,客户机接收回令牌,并使用一些额外信息(客户机IP、时间和自己的区块链地址)对令牌进行签名。之后,客户端使用自己的公钥发送已签名的信息。在这里之前一切都很好 现在,控制器接收带有签名信息和公钥的消息。尝试使用即将到来的公钥和已签名的消息验证此签名信息 以下是客户端部件代码: var message=token+”,“+client.address().address+”,“+time+”,“+my_public; va

我从客户机向服务器发送一个请求,服务器用令牌将响应返回给客户机和控制器。然后,客户机接收回令牌,并使用一些额外信息(客户机IP、时间和自己的区块链地址)对令牌进行签名。之后,客户端使用自己的公钥发送已签名的信息。在这里之前一切都很好

现在,控制器接收带有签名信息和公钥的消息。尝试使用即将到来的公钥和已签名的消息验证此签名信息

以下是客户端部件代码:

var message=token+”,“+client.address().address+”,“+time+”,“+my_public;
var message_buf=缓冲区。从(消息);
常量符号=crypto.createSign('SHA256');
签名、书写(留言);
sign.end();
const signature=sign.sign(my_private,'hex');
var sign_pub=signature.toString()+,“+my_public.toString();
var sign_pub_buf=缓冲区。from(sign_pub);
log(“sign_pub=”,sign_pub_buf);
发送(签名发布、sdn端口、主机、函数(错误){
如果(错误){
client.close();
}
否则{
console.log('Sign+Public_K已发送到SDN!!!');

}
好的,我修好了。它现在可以工作了

以下是客户端部件代码:

const{privateKey,publicKey}=crypto.generateKeyPairSync('rsa'){
模长:2048,
});
var my_public=publicKey.export({type:'spki',format:'pem'});
var my_private=私钥;
var时间=100;
client.on('message',函数(msg,info){
如果(数据=1){
log('从服务器接收的随机数!');
数据_cnt++;
var token_tot=msg.toString().split(“,”)
usr1_pub_pem=token_tot[0];
token=token_tot[1];
var message=token+”、“+ip+”、“+time+”、“+Buffer.from(my_public));
console.log(“客户端地址=”,ip)
常量符号=crypto.createSign('SHA256');
签名、书写(信息);
sign.end();
const signature=sign.sign(my_private,'hex');
发送(签名、sdn_端口、主机、函数)(错误){
如果(错误){
client.close();
}
否则{
log('签名已发送到SDN!!!');
发送(我的公用、sdn端口、主机、函数(错误){
如果(错误){
client.close();
}
否则{
log('公钥已发送到SDN!!!');
}
});                              
}
});                
}

})
好的,我修好了。现在可以用了

以下是客户端部件代码:

const{privateKey,publicKey}=crypto.generateKeyPairSync('rsa'){
模长:2048,
});
var my_public=publicKey.export({type:'spki',format:'pem'});
var my_private=私钥;
var时间=100;
client.on('message',函数(msg,info){
如果(数据=1){
log('从服务器接收的随机数!');
数据_cnt++;
var token_tot=msg.toString().split(“,”)
usr1_pub_pem=token_tot[0];
token=token_tot[1];
var message=token+”、“+ip+”、“+time+”、“+Buffer.from(my_public));
console.log(“客户端地址=”,ip)
常量符号=crypto.createSign('SHA256');
签名、书写(信息);
sign.end();
const signature=sign.sign(my_private,'hex');
发送(签名、sdn_端口、主机、函数)(错误){
如果(错误){
client.close();
}
否则{
log('签名已发送到SDN!!!');
发送(我的公用、sdn端口、主机、函数(错误){
如果(错误){
client.close();
}
否则{
log('公钥已发送到SDN!!!');
}
});                              
}
});                
}
});