【发布时间】:2018-07-19 05:24:19
【问题描述】:
我在当前用户存储 (Windows 10) 中有一个 X509 证书。在 C# / .NET 中验证 RSACryptoServiceProvider 生成的 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 的实例对其进行验证?
【问题讨论】:
-
要么找一个库,要么自己写一个(真的……真的……真的很痛苦)
-
你不能。 RSA 和 SHA 是不同的加密哈希方案。它们不兼容。
-
对于数字签名,我需要计算 SHA256 哈希并使用 RSA 对生成的哈希值进行签名。我错了吗?
-
索要代码被认为是一个过于宽泛的问题。您需要进行研究并提出解决方案。
-
既然你已经用 C# 弄明白了,为什么不写一个 Web 服务或 API 并从 JavaScript 发出一个方法调用呢?选项 B,节点 RSA,github.com/rzcoder/node-rsa。
标签: javascript c# rsa digital-signature sha256