RSA(博主尽量讲得简单易懂)
1、质数余数因数
251959084756578934940271832400483985714292821262040320277771378360436
620207075955562640185258807844069182906412495150821892985591491761845
028084891200728449926873928072877767359714183472702618963750149718246
911650776133798590957000973304597488084284017974291006424586918171951
187461215151726546322822168699875491824224336372590851418654620435767
9842338718477444792073993423658482382428119816381501067481045166037730
6056201619676256133844143603833904414952634432190114657544454178424(20
924616515723350778707749817125772467962926386356328991215483143816789
9885040445364023527381951378636564391212010397122822120720357
这是一串价值20美刀的数字,而要想发家致富,就得破解这串数字,每日一搏,来吧老表
要想破解就要了解方法
首先我们需要复习小学内容:
因数:可以将某整数 整除的数字
质数:除了一和本身无其他因数
余数:整数除以整数后剩下的数字,就是取模
2、加密解密(非对称加密)
我们需要用公钥(所有人知道)加密数据,接收方用私钥(只有接收方知道)解密
假设我们已经拿到公钥:(7 , 33)(我们让e代表第一个数字,n代表第二个数字)
而私钥:(?, 33)(我们让d代表第一个数字,n代表第二个数字)
注:由于我们不知道私钥所以有问号(问号等会再告诉你),
还有公钥和私钥里的33是同一个数字,所以都用n
假设我们聊天聊红温了,非常生气,想发个“艹”,但是又不能让别看出我们的粗鲁,要让别人觉得我们是温文尔雅的绅士,于是你将要对“艹”进行加密
①我们先将其写为拼音——“cao”
②为了方便演示,假设a=1,b=2以此类推,故“cao”=(3,1,15)
③用公钥对其加密:将(3,1,15)中每个数乘7次方(也就是乘e次方),可以得到(2187,1,170859375),再除以33(也就是n)求余数可以得到(9,1,27),这样就算加密了,再发给接收者
④假设我们就是接收人,已经拿到了私钥,d=3。所以私钥是(3,33),用它来解密,同样的道理,将(9,1,27)乘d(3)次方再除以n(33)取余,之后得到了(3,1,15)
很神奇是吧
而如果我们把公钥中的d和e对调一下依旧可以加密并解出原文,过程是固定的,因此可以转化为公式,写成算法
这里不难看出e和n都是公开的,那如果黑客拿到这俩数之后没有办法倒退吗,难就难在这,这就是打碎了蛋然后还想复原一样难,别说不信,先听我细细道来
文章开头的那串数字就是公钥里的n,2048个比特,要想解开,普通电脑要300万亿年,而如果你用靓仔(量子)计算机的话……不知道,没用过
3、公钥私钥制作过程
过程分为5步:
①先选2个质数p和q:p=3,q=11
②质数相乘,也就得到n:n=p×q
③用欧拉函数求一个数字t,具体推导过程我们不需要知道,用不到哈:t=(p-1)×(q-1)=2×10=20
④选公钥e,e的条件:质数;1<公钥e<t;不是t的因数,我们为了方便,选最小数3,于是公钥就是(3,33)
⑤计算私钥d:满足(d × e)% t = 1,得到d=7,所以私钥就是(7,33)
这个算法重要的是不能被别人知道,或者算出了d。算法的关键在t,算出t我们需要p和q,如果我们让pq变得很大,那么t和n就会变得非常巨大,而即使公开n你也很难找到这两个质数,更何况n是两个质数相乘,说明只有一种情况的p和q符合。
这就是RSA算法的终极奥义
(七夕节快乐)