作者:vivo 互联网服务器团队-Deng Qian
一、前言
二、什么是秘钥
三、什么是对称加密
1.他们都用了蓝色 2.小明公布了“小明-蓝色”(小红和小偷不知道是什么颜料与蓝色的混合) 3.小红公布了“小红-蓝色”(小红和小偷不知道是什么颜料与蓝色的混合)
3.2 迪菲–赫尔曼密钥交换算法
第一步,小明混合自己的“小明-11,2”得到,小红混合自己的“小红-11,2”得到。 第二步,小明拿到“小红-11,2”(7)进行计算,小红拿到“小明-11,2”(5)进行计算。
第一步:将密码按照一位的长度进行切分(实际中通常按128位进行切分);就变成了“4”“6”“2”“3”“1”“5”; 第二步:对每块明文通过密钥3进行加密,结果就是“795648”,然后小明告诉小红和小偷:“我的密码是795648”; 第三步:小红拿到密文后,对密文进行切块,对每块通过密钥3进行解密,就得到了正确的密码“462315”,而小偷由于不知道密钥,就无法解密出正确的信息。
四、什么是非对称加密
在对称加密中,加密和解密使用的是同一份密钥。所以,在非对称加密中,加密和解密使用的是不同的密钥。非对称加密中的密钥分为公钥和私钥。公钥顾名思义就是公开的,任何人都可以通过公钥进行信息加密,但是只有用户私钥的人才能完成信息解密。非对称加密带来了一个好处,避免了对称式加密需要传输和保存同一份密钥的痛苦。
现在最流行的非对称加密算法就是RSA加密算法,具体是怎么做的呢,我们继续往下看。
4.1 RSA加密过程
维基百科是这么解释的:RSA加密算法是一种非对称加密算法,在公开密钥加密和电子商业中被广泛使用。RSA是由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)在1977年一起提出的。当时他们三人都在麻省理工学院工作。RSA 就是他们三人姓氏开头字母拼在一起组成的。
前面我们讲了如何通过钟算和幂函数建立不可逆(计算机可以通过穷举法计算出私钥,实际场景中就算是超级计算机也要计算几万亿年之久)的共享密钥。由于小红是小明的女朋友,小明天天在小红面前给她讲RSA加密算法的原理,所以小红也知道怎么得出自己的公钥和私钥。接下来我们一起跟着小红的脚步,看看RSA加密的公钥和私钥是怎么计算出来的。
第一步:小红选择了两个很大的质数p和q,这里为了便于计算,选择2和11; 第二步:计算p和q的乘积n=p*q=2*11=22; 第三部:计算n的欧拉函数φ(n)=(p-1)*(q-1)=10; 第四步:选择一个小于φ(n)且与φ(n)互质的整数e,{1,3,7,9},这里选择e=7; 第五步:计算e对于φ(n)的模反元素(ed mode φ(n) = 1)d,d=3
到这里小红就得到了他自己的公钥(n,e)和私钥(n,d)。其中n就是钟大小,e和d就是幂函数的幂。接下来就通过计算出来的公钥和私钥进行数据的加解密。
还是小明、小红和小偷三个人,小红对大家说,我的公钥是(22,7),小明知道了小红的公钥后,想讲自己的信息“14”告诉小红,于是就用小红公开的公钥进行加密。
具体步骤如下:
第一步:小明根据要加密的信息14进行计算,得到加密后的信息20,然后将20告诉小红和小偷; 第二步:小红有自己的私钥,将加密信息20进行解密,,得到了小明想传递给小红的信息。而小偷呢,知道22,7,20,但是不知道小红的密钥(22,3),无法解密出正确的信息。
RSA加密算法在数字签名中也发挥着巨大的作用,假设小偷可以假冒小红,说小红的公钥是(22,9),而小明不知道是小偷假扮的,按照小偷的公钥加密后,结果被小偷解密了。数字签名的作用就是防止信息被篡改,小红说她的公钥是(22,7)的同时,使用私钥给这段信息(通常使用MD5值计算签名)加上签名,小明得到公钥(22,7)和签名13,小明拿到签名后利用公钥计算出信息是否被篡改。
五、加密的实际作用
(1230186684530117755130494958384962720772853569595334792197322452151726400507263657518745202199786469389956474942774063845925192557326303453731548268507917026122142913461670429214311602221240479274737794080665351419597459856902143413=
33478071698956898786044169848212690817704794983713768568912431388982883793878002287614711652531743087737814467999489
×
36746043666799590428244633799627952632279158164343087642676032283815739666511279233373417143396810270092798736308917)
六、总结
最后总结一下,首先我们通过一个诈骗短信的例子,引出了加密的原理就是信息+密钥,密钥就是对信息进行加解密的一串数字。然后通过颜料混合把戏形象的演示了如何建立共享密钥。在使用乘法建立共享密钥的过程中,学习了钟算和幂运算,接着我们了解了RSA加密算法的过程,通过两个质数生成公钥和私钥,最后,我们根据公钥进行信息加密,再通过私钥完成信息解密。
七、写在最后
八、参考资料
END
猜你喜欢
vivo互联网技术
vivo移动互联网是基于vivo 智能手机所建立的完整移动互联网生态圈,围绕vivo大数据运营,打造包括应用、游戏、资讯、品牌、电商、内容、金融、搜索的全方位服务生态,满足海量用户的多样化需求。
点一下,代码无 Bug