我在当前用户存储中拥有X509证书(Windows 10)。验证由RSACryptoServiceProvider
在C#/ .NET中生成的JavaScript签名的最简单方法是什么?
我已经有了C#方法:
public static string GetSign(string data, AsymmetricAlgorithm privateKey)
{
var rsa = (RSACryptoServiceProvider)privateKey;
TextWriter textWriter = new StringWriter();
CertifycateKeyHelper.ExportPrivateKey(rsa, textWriter);
RSACryptoServiceProvider rsaClear = new RSACryptoServiceProvider();
rsaClear.ImportParameters(rsa.ExportParameters(true));
var signature = rsaClear.SignData(Encoding.UTF8.GetBytes(data),
new SHA256CryptoServiceProvider());
return BytesToHex(signature);
}
另外,我怎样才能转向另一个方向,生成一个RSA SHA256签名javascript并在C#中使用RSACryptoServiceProvider
实例进行验证?
答案 0 :(得分:1)
首先,您需要一个库来解析X.509证书。然后,您需要一种方法来验证和验证证书或明确信任它(证书固定)。如果您不能信任证书和其中的公钥,那么验证签名是没有意义的;它不会让您信任用它签名的数据。
解析,验证和验证X.509证书并非易事,这意味着您不能没有库。如果您可以固定证书,那么只需从中检索公钥即可逃脱。您还可以使用不同的方法提取公钥并固定(即存储)公钥本身。
在您信任证书后,您可以从中提取公钥并执行签名验证。请注意,M $文档很糟糕,并没有指定签名生成算法。它使用PKCS#1 v1.5填充。
对于签名生成,您需要以安全的方式传输私钥,解析私钥,然后执行签名生成。
StackOverflow不是为您完成的工作,所以我只提供了您需要遵循的步骤。