我今天一直在研究rsa算法的概念,这就是我所理解的。
生成密钥对-
两个素数(例如p1=53,p2=59)相乘生成n(将用作公共模)
我们在n变量上使用euler函数,并定义一个新的变量phi
我们生成一个公共指数e,条件是它必须是小奇数,而不是与我们的phi变量共享因子。
私钥d由以下公式生成:
algorithm - RSA中的私钥如何解密c(加密消息)?-LMLPHP
d = (k * (phi(n)) + 1) / e
我们用数字替换变量并获取私钥:
algorithm - RSA中的私钥如何解密c(加密消息)?-LMLPHP
d = (2 * (3016) + 1) / 3 = 2011
我们代替-
k2(据我所知k必须大于0且小于phi(n)
phi(n)3016(因为p1 * p2 = 3127和结果
是一个素数,我们很容易用p1p2得到它的phi(phi(n) = (p1-1) * (p2-1)
e3的指数(因为它不与3016共享任何因子,并且是奇数)
使用公钥-
之后,我们可以共享我们的en,因为计算机需要几十年才能从bign获取私钥。
我们的通信器将消息编码为十六进制,然后将其转换为base10整数通信器还可以添加随机整数填充以进行保护。
将消息转换为数字时,对其执行模幂运算:
[![在此处输入图像描述][3]][3]
因此,如果消息的数字是89,例如,如果我们对它进行模幂运算,我们将得到:
1394年
问题-
如果通信器向我们发送加密的139489),我们如何使用私钥自动解密此消息?有什么特别的公式必须使用吗?
非常感谢你的阅读。

最佳答案

给定:p = 53q = 59e = 3
n=p * q=3127
phi(n)=(p-1) * (q-1)=3016
lambda=LCM(p-1, q-1)=1508
dPhi=ModInverse(e, phi(n))=ModInverse(3, 3016)=2011
dLambda=ModInverse(e, lambda)=ModInverse(3, 1508)=503
以及CRT参数(我们这里不使用)
dp=dLambda % (q - 1)=503 % 58=35
dq=dLambda % (p - 1)=503 % 52=39
inverseQ=ModInverse(q, p)=ModInverse(59, 53)=9
https://en.wikipedia.org/wiki/Modular_multiplicative_inversehttps://en.wikipedia.org/wiki/Extended_Euclidean_algorithm用于制作ModInverse
注意dLambda小于dPhi。虽然最初的RSA论文使用了基于phi的模型,但后来它被简化为基于LCM的模型因为(p-1)(q-1)都是偶数的(因为pq都是素数!=2lambda最终最多为phi / 2,从而使逆矩阵的模空间更小。
因此,假设我们正在执行原始/未添加的rsa(因为这个密钥太小,无法用它填充rsa):
给定:m = 89
c=m^e % n=89^3 % 3127=704969 % 3127=1394>。
m=c^d % n=1394^503 % 3127=3.666e1581 % 3127=???是的。
相反,我们转到https://en.wikipedia.org/wiki/Modular_exponentiation
m=ModPow(1394, 503, 3127)=>ModPow(1394, 0b0001_1111_0111, 3127)
R:1,基:(1394%3127)=1394,指数:0b0001_1111_0111
r:(1*1394)%3127=1394,基:(1394*1394)%3127=1943236%3127=1369,指数:0b0000_1111_1011
R:(1394*1369)%3127=1908386%3127=916,基部:(1369*1369)%3127=1874161%3127=1088,E:0b0111_1101
R:(916*1088)%3127=996608%3127=2222,基部:(1088*1088)%3127=1183744%3127=1738,E:0b0011_1110
R:2222,基:(1738*1738)%3127=3020644%3127=3089,E:0b0001_1111
R:(2222*3089)%3127=6863758%3127=3120,基部:(3089*3089)%3127=9541921%3127=1444,e:0b0000_1111
R:(3120*1444)%3127=4505280%3127=2400,基:(1444*1444)%3127=2085136%3127=2554,e:0b0111
R:(2400*2554)%3127=6129600%3127=680,基部:(2554*2554)%3127=6522916%3127=3121,E:0b0011
R:(680*3121)%3127=2122280%3127=2174,基部:(3121*3121)%3127=9740641%3127=36,E:0b0001
R:(2174*36)%3127=78264%3127=89,基部:(36*36)%3127=1296%3127=1296,E:0b0000
右:89

08-17 07:10