gpt4 book ai didi

c# - RSA 导入手册 RSAParams 因数据错误错误而失败

转载 作者:太空宇宙 更新时间:2023-11-03 10:37:49 28 4
gpt4 key购买 nike

我整个早上都在做这个,但仍然无法弄清楚我错过了什么。

我正在尝试使用我自己生成的值执行 RSA 加密。有几篇关于此的 SO 帖子,其中有几篇让我走得更远。其中一些帖子让 OP 放弃并使用 BouncyCaSTLe 或其他东西,而有答案和评论说它确实有效。所以我下定决心要学习他们的知识并让 .Net RSACryptoServiceProvider 正常工作。

为此,我在这里有一个简单的小示例,但我什至无法导入 RSAParameters。

我还没有发布用于生成和测试素数或我的 e 值的代码。如果需要我可以,但我不认为那是故障所在,因为那是非常好的股票代码。

BigInteger p = BigInteger.Parse("17234...948417"); //Large Prime A
BigInteger q = BigInteger.Parse("16750...157759"); //Large Prime B
BigInteger n = BigInteger.Multiply(p, q); //Modulus
BigInteger e = BigInteger.Parse("16168...372355");

RSAParameters _rsaParams new RSAParameters();
_rsaParams.Modulus = n.ToByteArray();
_rsaParams.Exponent = e.ToByteArray();

RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
rsa.ImportParameters(_rsaParms);

Breakpoint Inspection

当然还有异常(exception)。

enter image description here


好吧,基于@Iridium 的回答,我加倍强调了我计算公共(public)指数的方式,但我确实做错了,因此得出了太大的公共(public)指数。在我对正确方法的研究中,我发现这个网站非常有用,它可以计算我能够检查自己并发现错误的指数。

http://nmichaels.org/rsa.py

最佳答案

我记得,RSACryptoServiceProvider 不接受导入参数中大于 4 个字节的 Exponent(即使字节数组表示的数字适合一个较小的字段,即通过添加前导零字节)。您的指数似乎是 129 个字节,显然超过了这个限制。

如果您使用的指数实际上是私有(private)指数,那么让它与 .NET RSACryptoServiceProvider 一起工作的唯一方法是填写其余字段(P, Q, DP, DQ, InverseQ) 正确设置Exponent 到通常小得多的公共(public)指数。

关于c# - RSA 导入手册 RSAParams 因数据错误错误而失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26894339/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com