Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
RSA在C#中加密,在nodejs中解密_C#_Node.js_Rsa - Fatal编程技术网

RSA在C#中加密,在nodejs中解密

RSA在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

我有一个客户端,它运行在C#上,用RSA公钥加密数据,然后发送给Nodejs解密。除了我解密的数据带有奇怪的填充外,一切都几乎完美无瑕。在我请求之前,我已经尝试了所有我知道的方法,所以任何帮助都将不胜感激

#

NodeJs

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');