加密原理详解:对称式加密VS非对称式加密,Zookeeper一致性级别分析

此时,房间中小明、小红、小偷三人都知道了几个信息。

1.他们都用了蓝色

2.小明公布了“小明-蓝色”(小红和小偷不知道是什么颜料与蓝色的混合)

3.小红公布了“小红-蓝色”(小红和小偷不知道是什么颜料与蓝色的混合)

接下来,见证奇迹的时刻到了,小明拿到“小红-蓝色”与自己的私钥“黄色”混合,得到“小红-蓝色-小明”的新颜料。同样的,小红拿到“小明-蓝色”与自己的私钥“红色”混合,得到“小明-蓝色-小红”。大家发现了吗?“小红-蓝色-小明”和“小明-蓝色-小红”是一模一样的颜色。而小偷不知道小明和小红的私钥颜色,无法混合出与他们相同的颜色。

至此,共享密钥建立起来了。在了解了共享密钥的建立过程后,我们将告别实体颜料,采用数字的方式来建立共享密钥。

**注:**大家可能想到了,小偷可以根据自己的颜料与公钥“蓝色”混合,尝试得出“小明-蓝色”和“小红-蓝色”。这样的方法称之为穷举法,也就是尝试所有的可能性,进行信息破解,所以加密算法在理论上都是可以通过穷举法破解的,只不过实际上,超级计算机都需要计算万亿年才能穷举出所有可能性。

3.1.2 乘法把戏:

首先,我们假设乘法如同颜料混合一样,是不能分解的,看看如何用乘法与数字建立共享密钥。

小明公开了一个数字5,然后小明选择了一个私人数字4,然后利用乘法将两者混合起来,得到“小明-5”(20),接下来小红也选择了一个私人数字7得到“小红-5”(35),小明拿到35*4=140,小红拿到20*7=140。共享密钥建立完成。

大家也发现了,小偷知道20,35,5这三个数字后,用除法就能算出小明和小红的私钥。所以,接下来我们将了解实际使用中的如何使用乘法把戏来防止私钥被计算出来的。

3.2 迪菲–赫尔曼密钥交换算法

我们都知道幂运算,但是要让计算机计算就比较难了。所以,我们会用幂运算作为建立共享密钥的乘法把戏。同时,我们还要了解钟算的原理,这里的钟可以理解成我们经常看到的时钟,我们常见的时钟最大是12,如果当前是10点,过了4个小时后,就变成了下午2点。也就是(10+4)mod12=2。了解了钟算和幂运算后,就开始进入正题吧。

还是小明、小红和小偷的房间,小明声明了钟为11,幂运算的底为2,接下来小明和小红分别选择了自己的私钥4和7。

第一步,小明混合自己的“小明-11,2”得到,小红混合自己的“小红-11,2”得到。

第二步,小明拿到“小红-11,2”(7)进行计算,小红拿到“小明-11,2”(5)进行计算。

大家注意到了吗,小明和小红建立了共享密钥3,而小偷无法根据已知的11,2,5,7这几个数字计算出密钥或小明小红的私钥。有了共享密钥后,小明和小红就可以安全进行加密传输了。

迪菲-赫尔曼密钥交换

3.3 AES对称加密过程

AES 的全称是 Advanced Encryption Standard ,是最流行的对称加密算法,其加解密速度快。AES支持128位,192位,256位三种长度的密钥,密钥越长安全性越高。AES加密时会把明文切分成许多小块的明文,然后对每块明文单独加密,将加密后的密文传送出去,接收方再将密文切块解密,得到明文。

如下图所示:

AES加密原理

上一步中小明和小红已经协商好了密钥3。接下来就可以通过对称加密进行通信了。

在小明、小红和小偷的房间中,小明想把密码“462315”告诉小红,于是:

第一步:将密码按照一位的长度进行切分(实际中通常按128位进行切分);就变成了“4”“6”“2”“3”“1”“5”;

第二步:对每块明文通过密钥3进行加密,结果就是“795648”,然后小明告诉小红和小偷:“我的密码是795648”;

第三步:小红拿到密文后,对密文进行切块,对每块通过密钥3进行解密,就得到了正确的密码“462315”,而小偷由于不知道密钥,就无法解密出正确的信息。

四、什么是非对称加密


在对称加密中,加密和解密使用的是同一份密钥。所以,在非对称加密中,加密和解密使用的是不同的密钥。非对称加密中的密钥分为公钥和私钥。公钥顾名思义就是公开的,任何人都可以通过公钥进行信息加密,但是只有用户私钥的人才能完成信息解密。非对称加密带来了一个好处,避免了对称式加密需要传输和保存同一份密钥的痛苦。

现在最流行的非对称加密算法就是RSA加密算法,具体是怎么做的呢,我们继续往下看。

4.1 AES对称加密过程

维基百科是这么解释的: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),无法解密出正确的信息。

小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
img

链图片转存中…(img-E4lOQ9MC-1710919942180)]

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
[外链图片转存中…(img-h1JuuJL6-1710919942180)]

  • 25
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值