RSA在C#中加密,在nodejs中解密
我有一个客户端,它运行在C#上,用RSA公钥加密数据,然后发送给Nodejs解密。除了我解密的数据带有奇怪的填充外,一切都几乎完美无瑕。在我请求之前,我已经尝试了所有我知道的方法,所以任何帮助都将不胜感激 # NodeJsRSA在C#中加密,在nodejs中解密,c#,node.js,rsa,C#,Node.js,Rsa,我有一个客户端,它运行在C#上,用RSA公钥加密数据,然后发送给Nodejs解密。除了我解密的数据带有奇怪的填充外,一切都几乎完美无瑕。在我请求之前,我已经尝试了所有我知道的方法,所以任何帮助都将不胜感激 # NodeJs const buffer = Buffer.from(val, 'base64'); const decrypted = crypto.privateDecrypt( { key: this.rsaPrivateKey, padding: crypto.c
const buffer = Buffer.from(val, 'base64');
const decrypted = crypto.privateDecrypt(
{
key: this.rsaPrivateKey,
padding: crypto.constants.RSA_PKCS1_PADDING
},buffer);
let rtn = decrypted.toString('utf8');
解密后的数据将变为
{“HE l o”:“w o r l d”}
。知道为什么会发生这种情况吗?unicodeincoding
每个字符使用2个字节(UTF-16),而您在NodeJ中解码字节就好像它们是每个字符1个字节(UTF-8)。编码很重要。你告诉C#使用UTF16,而nodejs使用UTF8。谢谢你的帮助,非常感谢!你们太棒了!
const buffer = Buffer.from(val, 'base64');
const decrypted = crypto.privateDecrypt(
{
key: this.rsaPrivateKey,
padding: crypto.constants.RSA_PKCS1_PADDING
},buffer);
let rtn = decrypted.toString('utf8');