RSA解密密钥

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RSA解密密钥相关的知识,希望对你有一定的参考价值。

计算C#中RSA的解密密钥的公式是什么?

我一直在使用

BigInteger d = BigInteger.ModPow(e, (euiler - 1), euiler)

但是那似乎不正确,而我获得正确解密密钥的唯一方法是,例如,如果我为de硬编码一个值,

   BigInteger d; 

   BigInteger de = 7; 
   d = ((de * euiler) + 1) / e;
答案

计算C#中RSA的解密密钥的公式是什么?

与任何语言相同:)

(d * e) mod LCM(p-1, q-1) == 1; solve for d.

使用C#-y语法

d = ModInverse(e, LCM(p - 1, q - 1))

稍微不那么密集的计算(避免了计算LCM的需要)

eulierTotient = (p - 1) * (q - 1);
d = ModInverse(e, eulierTotient);

((它将产生与LCM不同的d,但仍会起作用)

ModInverse(modular multiplicative inverse)不太难,对于Extended Euclidean Algorithm。如果您不想将算法独立转换为C#,则始终可以在现有答案中找到实现,例如How to perform modinverse in C#

以上是关于RSA解密密钥的主要内容,如果未能解决你的问题,请参考以下文章

前端RSA密钥生成和加解密window.crypto

Python使用rsa模块实现非对称加密与解密

尝试使用 RSA 解密时密钥不存在

OpenSSL之RSA用法

RSA加密解密及RSA签名和验证

Java生成的RSA密钥对,用C#加密解密,怎么弄