2011-11-29 137 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