【发布时间】:2019-08-11 10:08:31
【问题描述】:
我有两个应用程序。一个负责签署文件,另一个负责验证。
签名应用程序执行以下操作:
X509Certificate2 certificate = new X509Certificate2(PROJECT_DIR_PATH + "cert.pfx", "password");
using (RSA rsa = certificate.GetRSAPrivateKey())
{
signature = rsa.SignData(exeContent, HashAlgorithmName.SHA1, RSASignaturePadding.Pkcs1);
}
cert.pfx 是自签名证书,由 Openssl 生成。
验证应用程序:
X509Certificate2 certificate = new X509Certificate2(PROJECT_DIR_PATH + "cert.pfx", "password");
using (RSA rsa = certificate.GetRSAPublicKey())
{
return rsa.VerifyData(exeContentWithoutSignature, signature, HashAlgorithmName.SHA1, RSASignaturePadding.Pkcs1);
}
据我了解,.pfx 文件包含公钥和私钥信息,因此我不应该将其提供给任何人。据我所知,验证步骤只需要公钥。 如何在不暴露我的 pfx 文件的情况下使用 rsa.VerifyData 或其他函数来验证签名?
【问题讨论】:
-
您需要将它们放在两个单独的文件中,并且只公开公钥文件。
-
@LexLi 谢谢你的链接:)
标签: c# ssl rsa digital-signature public-key