2011-11-29 53 views
-2

我有一個RSA加密文件&我想在.NET文件RSA解密

我有FOLL用C#進行解密。 (1024位ENC)消息(密文)的參數解密

  • 公用指數
  • 私人指數
  • 素數p
  • 數q
  • 黃金指數p
  • 素數指數q
  • CRT coefficie NT

的密文是HEX格式

我知道CRT方法解密我試着執行使用FOLL命名空間解密的消息,但對如何使用它

m1 = (ciphertext^dP) Mod P 
m2 = (ciphertext^dQ) Mod Q 
h = (qInv * (m1 - m2)) Mod P 
m = m2 + (h * Q) 

不明確

System.Security.Cryptography 

有人可以幫我用示例代碼實現解密,因爲這是我第一次處理機智h解密。

是否有任何現成的API可用?其中我只需要通過參數&我將收到所需的輸出。

回答

0

首先創建一個RSAParameters結構,並用您自己的RSA參數填充它。接下來創建一個RSACryptoServiceProvider實例,並在您之前定義的參數上調用ImportParameters。此時,您應該可以在使用OAEP填充(或不使用)的情況下針對您的數據調用Decrypt

所以喜歡的東西:

RSAParameters p = new RSAParameters(); 
p.D = d; 
// ... all parameters 
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); 
rsa.ImportParameters (p); 
byte[] decrypted = rsa.Decrypt (encrypted, false); 
+0

你的意思是我的代碼應該如下 'RSAParameters P =新RSAParameters(); 的pP = 「」 戶Q = 「」 p.dP = 「」 p.dQ = 「」 p.qInv = 「」 p.modulus = 「」 p.PrivateExponent = 「」 p.PublicExponent = 「」 RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); rsa.ImportParameters(p); byte [] decrypted = rsa.Decrypt(encrypted,false); ' – Akshay

+0

是的,你應該擁有所有的參數(我不記得是否需要CRT參數,但是它們不是Mono的,因爲它們可以重新計算),而是byte [](而不是'string') 。 .NET對於左右填充* right *大小也是挑剔的。如果這是一個問題,請參閱其他SO問題。 – poupou