[英]How to import a Public Key into RSA For decryption
這似乎是一個愚蠢的問題,但我一直在搜索最后一個半小時。 我有一條用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,說沒有設置密鑰。 我需要標記一些內容以使其知道我要使用公共密鑰解密嗎?
這一切都是拋出CryptographicException,說沒有設置密鑰。 我需要標記一些內容以使其知道我要使用公共密鑰解密嗎?
不可以。高級和中級密碼庫不支持諸如私鑰加密和公鑰解密之類的異常操作。 如果需要,您需要使用數學原語來實現RSA。
也許您需要一種數字簽名機制?
根據Pavel的回答,我們認為最好自己做數學。 我們最終以
var encryptionKey = new BigInteger(_session.EncryptionKey);
var result = encryptionKey.modPow(12345, BigInteger.Parse("HEX of public key", System.Globalization.NumberStyles.HexNumber).ToByteArray());
_session.EncryptionKey = result.ToByteArray();
(中間有一些填充,但是與該問題無關,因此我省略了它)
感謝所有的答案 :)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.