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

c# – 将CRT(中国剩余定理)中的RSA加密参数映射到.NET格式,第1张

概述我需要使用C#实现RSA加密/解密 我有一个包含以下参数的私钥: mod n,exponent,p,q,dP,dQ和(p-1mod q) 以上参数在Chinese remainder algorithm中解释 但是,RSA的C#.NET实现具有以下不同的参数集: 模数,指数,P,Q,DP,DQ,D,InverseQ 当我试图将数据从CRT映射到DOTNET时,我收到错误数据错误 对于p,q,dP和 我需要使用C#实现RSA加密/解密

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

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

以上参数在Chinese remainder algorithm中解释

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

模数,指数,P,Q,DP,DQ,D,InverseQ

当我试图将数据从CRT映射到DOTNET时,我收到错误数据错误

对于p,dP和dQ,映射是显而易见的,但关于其他参数我不确定.

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

解决方法 mod n映射到Modulus,p-1mod q映射到InverseQ,加密指数映射到Exponent,解密指数映射到D.

加密指数e和解密指数d通过e * d = 1 mod(p-1)(q-1)相关.因此,如果你有一个,你可以很容易地从system.numerics.BigInteger类派生另一个使用一些方法.

var Pminus1 = BigInteger.Subtract(P,BigInteger.One);var Qminus1 = BigInteger.Subtract(Q,BigInteger.One);var Phi = BigInteger.Multiply(Pminus1,Qminus1);var PhiMinus1 = BigInteger.Subtract(Phi,BigInteger.One);// var D = BigInteger.ModPow(E,PhiMinus1,Phi);

请注意,构建.NET BigInteger时必须小心,特别是如果您习惯使用Java的BigInteger类.有关更多信息,请参见this question.

编辑:

正如CodeInChaos指出的最后一行是错误的!

错误!错误!错误!

我很尴尬.在对邪恶势力的鞠躬中,BigInteger类没有模块化逆方法,也没有扩展的欧几里德算法方法.你可以谷歌搜索’c#extended euclIDean algorithm’你可以找到很多实现.扩展的欧几里德算法将给出整数x和y,使得1 = e * x phi * y. x是e mod phi的倒数,因此设置D = x mod phi是需要的.

总结

以上是内存溢出为你收集整理的c# – 将CRT(中国剩余定理)中的RSA加密参数映射到.NET格式全部内容,希望文章能够帮你解决c# – 将CRT(中国剩余定理)中的RSA加密参数映射到.NET格式所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1251372.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存