今天我一直在研究RSA算法的概念,这就是我所理解的。c(加密消息)如何用RSA中的私钥解密?
要生成的密钥对 -
- 两个素数(P1 = 53,P2 = 59例如)相乘,以产生
n
(其将被用作公共模数) - 我们使用欧拉欧拉功能在我们的
n
变量上并定义一个新变量phi
。 - 我们生成一个公开指数
e
,条件是它必须是与我们的phi
变量不共享因子的小奇数。 私钥
d
从该公式生成:或
d = (k * (phi(n)) + 1)/e
。我们用数字代替变量,并得到私钥:
或
d = (2 * (3016) + 1)/3 = 2011
我们代替 -
k
与2
(由我所知k
必须大于0且小于phi(n)
)phi(n)
与3016
(因为p1 * p2 = 3127
并且由于结果 是一个素数,我们得到了它披容易使用p1
和p2
。 (phi(n) = (p1-1) * (p2-1)
)e
与3
指数(因为它不共享与3016的任何因素,它是奇数)
要使用公共密钥 -
之后,我们可以分享我们的e
和n
,因为电脑需要几十年才能从大n
获得私钥。
我们的通信器将消息编码到十六进制中,然后将其转换为base10整数。通信器也可以添加随机整数填充以进行保护。
当消息被转变成数,模幂在其上被执行的:
[![在这里输入的形象描述] [3] [3]
因此,如果数字信息是89例如,如果我们做模幂就可以了,我们会得到:
的问题 -
如果我们的传播者发送给我们1394
这是加密的89
(89^3 * mod(59 * 53) = 1394
),我们如何使用我们的私钥自动解密此消息?是否有一些必须使用的具体公式?
非常感谢您的阅读。
https://crypto.stackexchange.com/可能是您的问题更好的地方。 – Henrik
我得到了916的加密值,而不是89. 1394^3%3127. –
@MillieSmith'89^3 * mod(53 * 59)'是'1394',你必须加密89. – ShellRox