2017-04-10 99 views
2

我必須在節點js中籤署一個字符串,與使用RSACryptoServiceProvider的C#應用​​程序的方式相同。事實上,它使用節點js中的RSACryptoServiceProvider

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#代碼?

謝謝!

回答