学RSA算法看了大佬的两个视频
然后总结一下,以便以后复习学习
RSA算法是这样实现的
假设川建国想要发一个秘密消息给我们,就需要对这个消息进行加密。然后只有我们能够知道这个消息是什么,并且预先我们不需要再私底下通信串通秘钥。
它需要以下几个步骤:
1、将很多个信封放到我家邮箱里,如果有人想给我写信,就拿一个信封
首先,我们需要选择一个很大的数,这里为来计算方便 我们选择77,然后我们把这个数拆开(拆的过程中有要求这两个数必须都是素数就行了) 拆成7*11。那么7和11就是我们的底牌了,这个只能我们自己知道,然后我们随便拿一个数(假设是3)和原本那个大素数77装进一个信封里,把(3,77)这个东西放到家门口,给全世界人们公布,如果别人想发消息给你,他就把他要发的消息放进有77和3的那个信封里。(这个信封对别人来讲只能投进去,不能取出来,但是他里面是透明的,大家都可以看到投进去的东西)
把大佬的图搬来
2、别人写信的过程
m是别人要发给我的消息,(e,N)是我公布给大家的那个数、是那个信封,大家把m放到我放在门外的信封(e,N)里,变成了写有内容的信封C(这个c是密文),然后发给我。在发给我的过程中,我公布的信封(e,N)和生成的密文C,是所有人都可以看到的。
3、我拆开信封,得到密文
首先我用刚刚只有自己知道的那两个数(7和11),组合成了一把钥匙,这把钥匙专门用来开我的这个信封.我用这个钥匙打开以后就能得到原文m。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
那么这个具体的过程是凭借几个简单的数学公式实现的;
捏造钥匙d(解密秘钥):
①假设那两个数分别是p和q,那我们通过这两个数可以得到 r=(p-1)*(q-1)
②d=(kr+1)/e 最终的这个d就是我们制成的钥匙,k是我们从0开始试的数,只要k的值满足d是个整数,这个钥匙我们就指出来了
e的选取
这个e的选取即便是随机的,但他也要满足一定的条件
①e要小于最后的r
②e要与最后的r互质
即满足以下几个条件中任一:
1、两个不同的质数一定是互质数。例如,2与7、13与19。
2、一个质数,另一个不为它的倍数,这两个数为互质数。例如,3与10、5与 26。
3、相邻的两个自然数是互质数。如 15与 16。
4、相邻的两个奇数是互质数。如 49与 51。
5、较大数是质数的两个数是互质数。如97与88。
6、小数是质数,大数不是小数的倍数的两个数是互质数。例如 7和 16。
7、2和任何奇数是互质数。例如2和87。
8、1不是质数也不是合数,它和任何一个自然数在一起都是互质数。如1和9908。
9、辗转相除法。
加密过程
解密过程
*模运算就是一个取余得的过程3mod2就是3对2取余,结果为1即3mod2 ≡1