节点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