相关疑难解决方法(0)

为什么RSAParameters模数不等于P和Q的乘积?

P和Q的值与.Net RSAParameters的模数值不匹配.根据RSA算法和MSDN文档,它应该是:P*Q =模数

我生成了一个512位RSA密钥对,并通过调用将其导出为XML:

RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(512);
rsa.ToXmlString(true);
Run Code Online (Sandbox Code Playgroud)

这给了我以下XML:

<RSAKeyValue>
  <Modulus>rcLI1XTfmXtX05zq67d1wujnUvevBu8dZ5Q5uBUi2mKndH1FZLYCKrjFaDTB/mXW1l5C74YycVLS6msY2NNJYw==</Modulus>
  <Exponent>AQAB</Exponent>
  <P>1dwGkK5POlcGCjQ96Se5NSPu/hCm8F5EYwyqRpLVzgk=</P>
  <Q>0AAEMHBj7CP2XHfCG/RzGldw1GdsW13rTo3uEE9Dtws=</Q>
  <DP>PO4jMLV4/TYuElowCW235twGC3zTE0jIUzAYk2LiZ4E=</DP>
  <DQ>ELJ/o5fSHanBZCjk9zOHbezpDNQEmc0PT64LF1oVmIM=</DQ>
  <InverseQ>NyCDwTra3LiUin05ZCGkdKLwReFC9L8Zf01ZfYabSfQ=</InverseQ>
  <D>EWwFTPmx7aajULFcEJRNd2R4xSXWY8CX1ynSe7WK0BCH42wf/REOS9l8Oiyjf587BhGa3y8jGKhUD7fXANDxcQ==</D>
</RSAKeyValue>
Run Code Online (Sandbox Code Playgroud)

现在我成功地编写了一个litte测试程序来加密,解密,签名和验证数据.

最后我添加了一些测试代码:

RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(512);
rsa.FromXmlString(key); // key = string with XML above

RSAParameters param = rsa.ExportParameters(true);
BigInteger p = new BigInteger(param.P);
BigInteger q = new BigInteger(param.Q);
BigInteger n = new BigInteger(param.Modulus);
BigInteger myN = BigInteger.Multiply(p, q);
Console.WriteLine("n   = " + n.ToString());
Console.WriteLine("myN = " + myN.ToString());
Run Code Online (Sandbox Code Playgroud)

这给了我们以下输出:

n   = 5200154866521200075264779234483365112866265806746380532891861717388028374942014660490111623133775661411009378522295439774347383363048751390839618325234349

myN = 23508802329434377088477386089844302414021121047189424894399694701810500376591071843028984420422297770783276119852460021668188142735325512873796040092944
Run Code Online (Sandbox Code Playgroud)

为什么乘以P和Q不等于模数?

我已经检查了很多东西,比如endian,encoding,BigInteger类,成功加密,解密,签名,用上面的XML密钥验证但是找不到任何解释为什么P和Q乘以不等于模数...

任何人都可以帮我解释为什么P*Q不是模数? …

.net c# cryptography rsa

9
推荐指数
2
解决办法
2707
查看次数

将RSA加密参数从CRT(中国剩余定理)映射到.NET格式

我需要使用C#实现RSA加密/解密

我有一个包含以下参数的私钥:

mod n,exponent,p,q,dP,dQ,和(p-1mod q)

以上参数在中文余数算法中进行了解释

但是,RSA的C#.NET实现具有以下不同的参数集:

Modulus,Exponent,P, Q,DP,DQ,D,InverseQ

当我试图将数据映射CRT到时DOTNET,我得到错误Bad Data

对于 p,q,dP以及dQ映射是明显的,但有关的参数,其余的我不知道.

如果我可以获得映射这些参数的帮助,那就太棒了

.net c c# rsa chinese-remainder-theorem

6
推荐指数
1
解决办法
2194
查看次数

如何从P和Q计算RSA的附加私钥参数?

当读取的RSA私人密钥团,其中缺少一些RSA参数(DP,DQ,InverseQ,d),我怎么能计算从那些缺少这些参数供应吗?我读过,有可能从P和Q,其计算这些提供,但我不知道如何计算它们.

导入此密钥时,我在尝试使用私钥时出错,声称数据不存在(当然,虽然提供了P和Q).

我需要能够在多个平台上执行此操作,因此我担心这会使我需要拥有实际代码来计算它们.

在C#中

c# cryptography rsa

2
推荐指数
1
解决办法
863
查看次数

1/BigInteger in c#

我要实现

BigInteger.ModPow(1/BigInteger, 2,5);
Run Code Online (Sandbox Code Playgroud)

1/BigInteger总是返回0,导致结果也是0如此.我试着BigDecimal为c#寻找一些课程,但我什么都没发现.即使没有,有什么方法可以算这个BigDecimal吗?

c# biginteger inverse

1
推荐指数
1
解决办法
2910
查看次数