使用私钥 X509 证书签署字符串
Sign string with private key X509 certificate
我在当前用户存储中有一个 X509 证书 (Windows 10)。验证由 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
的实例对其进行验证?
首先,您需要一个库来解析 X.509 证书。然后您需要一种方法来验证和验证证书或明确信任它(证书固定)。如果您不能信任证书和其中的 public 密钥,那么验证签名就没有意义了;它不会让您信任用它签名的数据。
解析、验证和验证 X.509 证书不是一件容易的事,这意味着您离不开库。如果您可以固定证书,那么您只需从中检索 public 密钥即可。您还可以使用不同的方式提取 public 密钥并固定(即存储)public 密钥本身。
信任证书后,您可以从中提取 public 密钥并执行签名验证。请注意,M$ 文档很糟糕并且没有指定签名生成算法。它使用 PKCS#1 v1.5 填充。
对于签名生成,您需要以安全的方式传输私钥,解析私钥,然后执行签名生成。
Whosebug 不会在这里为您完成工作,所以我只是提供了您需要遵循的步骤。
我在当前用户存储中有一个 X509 证书 (Windows 10)。验证由 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
的实例对其进行验证?
首先,您需要一个库来解析 X.509 证书。然后您需要一种方法来验证和验证证书或明确信任它(证书固定)。如果您不能信任证书和其中的 public 密钥,那么验证签名就没有意义了;它不会让您信任用它签名的数据。
解析、验证和验证 X.509 证书不是一件容易的事,这意味着您离不开库。如果您可以固定证书,那么您只需从中检索 public 密钥即可。您还可以使用不同的方式提取 public 密钥并固定(即存储)public 密钥本身。
信任证书后,您可以从中提取 public 密钥并执行签名验证。请注意,M$ 文档很糟糕并且没有指定签名生成算法。它使用 PKCS#1 v1.5 填充。
对于签名生成,您需要以安全的方式传输私钥,解析私钥,然后执行签名生成。
Whosebug 不会在这里为您完成工作,所以我只是提供了您需要遵循的步骤。