![](/img/trans.png)
[英]Trying to decrypt a string with public key(not private) using bouncycastle in .net
[英]How to check if private/public key pair match using (.NET / BouncyCastle)?
我有私钥和公钥的 AsymmetricKeyParameter 对象。 查看它们是否匹配的最简单方法是什么?
我正在尝试加密一些文本(私钥)并解密一些文本(公钥)。 到目前为止,我还没有能够做到这一点,但这似乎是错误的方法。
更新:这是示例代码:
X509Certificate2 c = new X509Certificate2(@"certificate.cer");
byte[] privateKeyData = System.IO.File.ReadAllBytes(@"private.key");
Org.BouncyCastle.X509.X509Certificate cert = DotNetUtilities.FromX509Certificate(c);
RsaPrivateCrtKeyParameters privateKey = (RsaPrivateCrtKeyParameters)PrivateKeyFactory.CreateKey(privateKeyData);
RsaKeyParameters publicKey = (RsaKeyParameters)cert.GetPublicKey();
if (privateKey.Modulus.Equals(publicKey.Modulus) && publicKey.Exponent.Equals(privateKey.PublicExponent))
{
//they match
}
检查私钥和公钥是否匹配的最简单方法是用公钥加密一段数据,看看是否可以用私钥解密——或者用私钥对一段数据进行签名,然后看看你是否可以用公钥验证它。
如果密钥是RSA密钥,你可以投的公钥Org.BouncyCastle.Crypto.Parameters.RsaKeyParameters
和私钥Org.BouncyCastle.Crypto.Parameters.RsaPrivateCrtKeyParameters
并验证Modulus
是相同的,即Exponent
的公钥等于PublicExponent
。 如果您想变得更花哨,您还可以验证私钥的所有剩余参数(遵循PKCS#1第 3.2 节)。
我正在尝试加密一些文本(私钥)并解密一些文本(公钥)。
公钥不用于解密。 在 PKI 中,多方共享公钥以加密它打算发送给私钥持有者的数据,然后使用私钥解密提交的数据。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.