节点js中的RSACryptoServiceProvider

我必须在节点js中签名一个string,就像使用RSACryptoServiceProvider的C#应用​​程序一样。 其实它用

X509Certificate2 certificate = new X509Certificate2("file.pfx", "aPassword", X509KeyStorageFlags.Exportable); RSACryptoServiceProvider rsa = (RSACryptoServiceProvider)RSACryptoServiceProvider.Create(); rsa.FromXmlString(certificate.PrivateKey.ToXmlString(true)); signer = new RSAPKCS1SignatureFormatter(rsa); signer.SetHashAlgorithm("SHA256"); byte[] signedData = signer.CreateSignature("a string"); string signedString = Convert.ToBase64String(signedData); 

我试过在节点js中做同样的事情,到目前为止,以这种方式使用jsonwebtoken

 var kdrPrivateKey = fs.readFileSync('private_key.pem'); var authorizationSigned = jwt.sign("a string", kdrPrivateKey, { algorithm: 'RS256'}); var authorizationBase64 = Base64.encode(authorizationSigned); 

我也通过这种方式从file.pfx中获得了private_key

 openssl pkcs12 -in file.pfx -nocerts -out private_key.pem -nodes 

我的问题最后是节点js代码等价于C#代码吗? 如果不是的话,我怎样才能在一个节点js方式的C#代码?

谢谢!

请参考下面的链接执行数据签名: https : //nodejs.org/api/crypto.html