【发布时间】:2013-04-03 11:09:52
【问题描述】:
这似乎是一个愚蠢的问题,但我一直在寻找过去一个半小时。我有一条使用 RSA 密钥对的 PRIVATE KEY 加密的消息。我有我需要用来解密消息的公钥。我一直在寻找将公钥导入 RSACryptoProvider 的方法,但似乎找不到方法。我只是有一个 BigInteger 对象作为模数和指数(构成一个公钥)。我似乎找不到让它解密任何东西的方法。我试过了
System.Security.Cryptography.RSACryptoServiceProvider rsa = new System.Security.Cryptography.RSACryptoServiceProvider();
rsa.ImportParameters(new System.Security.Cryptography.RSAParameters { Exponent = BitConverter.GetBytes(12345), Modulus = BigInteger.Parse("HEX of public key", System.Globalization.NumberStyles.HexNumber).ToByteArray() });
_session.EncryptionKey = rsa.Decrypt(_session.EncryptionKey, false);
所有这一切都是抛出一个 CryptographicException 说没有密钥集。我需要标记一些东西,让它知道我想使用公钥解密吗?
【问题讨论】:
-
您确定该邮件是用私钥加密的吗?如果只使用私钥句柄进行加密,高级 RSA 实现将使用相应的公钥进行此操作。
-
是的。使用私钥进行加密是为了使只有拥有私钥的一方才能为客户端生成密钥,因为公钥在客户端中是硬编码的。它是一种验证。
标签: c# encryption cryptography rsa public-key-encryption