【发布时间】:2018-12-16 21:04:28
【问题描述】:
我的任务是将 C# 代码转换为 NodeJS。我陷入了转换。对我来说看起来有点复杂。任何帮助将不胜感激。
byte[] str = ASCIIEncoding.Unicode.GetBytes('mystring');
SHA1 sha1 = SHA1.Create();
byte[] hashdata = sha1.ComputeHash(str);
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
rsa.FromXmlString(PrivateKey);
byte[] signature = rsa.SignData(hashdata, new SHA1CryptoServiceProvider());
return Convert.ToBase64String(signature);
这就是我想出的。但它产生的结果与 C# 代码不同。
var convertString = require('convert-string');
var sha1 = require('js-sha1');
var rsaSign = require('jsrsasign');
var rsaUtil = require('jsrsasign-util');
var privateKeyFile = 'files/pvtKey'; //Its a PEM Private Key converted from XML Private Key.
/* -----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQCYeml ...
-----END RSA PRIVATE KEY-----*/
var bytesArray = convertString.stringToBytes('mystring');
var messageDigest = sha1(bytesArray);
var privateKeyContent = rsaUtil.readFile(privateKeyFile);
var privateKey = rsaSign.KEYUTIL.getKey(privateKeyContent);
var sig = new rsaSign.KJUR.crypto.Signature({'alg': 'SHA1withRSA'});
sig.init(privateKey);
sig.updateHex(messageDigest);
var signedMsgDigest = sig.sign();
return Buffer.from(signedMsgDigest).toString('base64');
【问题讨论】:
标签: c# node.js rsa sha1 private-key