什么是加密
本文最后更新于 131 天前,其中的信息可能已经有所发展或是发生改变。

本文首发于@ShareCentre (如果@Shirker 允许发布的话)

文章部分内容参考作者原来一篇博文https://xcao.top/post-222.html

@ShareCentre 发布后,本文将同步在 https://xcao.top/ 进行发布。

正文开始

在搭梯子时,我们基本都不会使用socks5这种明文代理,而是使用vmess、Trojan之类的加密代理,那么加密是什么呢?

2e29ba9883b39f52f4295
图片来自谷歌搜索,侵权联系

加密是什么

首先第一个问题,加密是什么?

在密码学中,加密(英语:Encryption)是将明文信息改变为难以读取的密文内容,使之不可读的过程。只有拥有解密方法的对象,经由解密过程,才能将密文还原为正常可读的内容。 ———摘自维基百科

我们可以举一个简答的例子来理解,比如A给B发送一条消息叫ShareCentre,我们把这条消息所有的字母按顺序往后移一位,那么这个消息就变成了TibsfDfosf 经过这样一种简单的加密,我们就得到了明文ShareCentre 和密文 TibsfDfosf 。要解密也非常简单,只需要将密文的字母往前移一位就可以了。

加密方式

当然这种加密方式,很容易就能被破解,因为太过于简单了,非常容易破解,这里我们来说一些别的加密,先从对称性加密开始讲起吧。

对称性加密

提到对称性加密,我们就不得不提一下AES加密。

高级加密标准(英语:Advanced Encryption Standard,缩写:AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院(NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。现在,高级加密标准已然成为对称密钥加密中最流行的算法之一。 ——摘自维基百科

AES加密具体的数学原理比较难理解,有兴趣可以去维基百科自行查阅,这里不作为重点来讲,不进行赘述。

我们同样来对明文ShareCentre进行加密,然后用Shirker作为秘钥,经过加密后,我们就会得到这么一串字符 U2FsdGVkX18gOxen01XOvNvgc/XfHJxBJP/IMxDnJus= (是不是完全看不出来原内容是什么了)而我们拿着密文 U2FsdGVkX18gOxen01XOvNvgc/XfHJxBJP/IMxDnJus= 秘钥 Shirker 去进行解密,就能得到ShareCentre 这个明文了。

96f02dcd342649239c67f
图来自谷歌搜索,侵权请联系

这大概就是AES加密,一种对称秘钥加密方式。但是这种加密方式有一个很大的弊端,就是两个人进行通信时,秘钥Shirker必须要明文传输,而这就有泄漏的可能性了。这时候,就得讲讲另一种加密方式,非对称性加密了。

非对称性加密(部分内容摘自作者以前的一篇博文 https://xcao.top/post-222.html

上面我们说的对称性加密,最大的问题就是秘钥容易被泄漏,而非对称性加密就能很好的解决这一问题。而提到非对称性加密,不得不说一下RSA加密。

RSA加密算法是一种非对称加密算法,在公开密钥加密和电子商业中被广泛使用。RSA是由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)在1977年一起提出的。当时他们三人都在麻省理工学院工作。RSA 就是他们三人姓氏开头字母拼在一起组成的。 ——摘自维基百科。

824218d969e5303d9fabf
Adi Shamir(RSA创始人之一,果然,大佬发量,图来自维基百科)

那么RSA加密是怎么实现的,维基百科有比较详细的解释,这里说一下我的理解:

首先,我们随机找来两个质数p和q,在实际运用中,这两个质数大小都是1024比特,接着,我们可以求出n,n=pq,然后,我们需要计算n的欧拉函数即φ(n),这里 φ(n) 为(p-1)(q-1)。接着,需要找到公钥e,e的取值1<e< φ(n) e需要为正整数且e与 φ(n) 互质。接着还需要找到一个私钥d,d要求为正整数且ed除以 φ(n) 余数为1。

找到上述这些数字之后,我们就可以发送加密数据了。首先,需要接收方完成上述步骤,将公钥e,两质数积n传递给发送方。发送方收到这些数据后,便需要将发送的明文m进行一个运算。计算m的e次方,然后算出这个数与n的余数,将余数传递给接收方,这个算出来的数就是密文c。而接收方只需要一个简单的运算,算出密文c与的私钥d次方,算出这个数与n的余数。从数学定理上可以证明(具体的证明过程可以百度搜索,这里就不赘述了),算出来的这个余数一定等于明文m。这样就完成了一次安全的数据交换。

4f7ffc77b16be257e92aa
RSA加密原理图解(来自谷歌搜索,侵权请联系)

这里我们可以上一个程序方便理解,写了一个小程序方便理解。

Github: https://github.com/xiaocao666tzh/RSATest 使用MIT Licence进行开源。

RSA加密的安全性

那么,RSA算法是否安全呢。首先,在这里需要交换的数据有公钥e,密文m以及两质数之和n。而解密需要密文m,两质数之和n以及私钥d。那么我们能不能去计算出私钥d呢?从上边的实现过程可以发现,想要知道私钥d,就需要知道 φ(n) 想要知道 φ(n) 就需要知道p和q,也就是说,只要有人有能力去把n给质因数分解,那么我们就有办法去破解RSA。但实际应用中RSA的两个质数是长度为1024的二进制数,以目前技术几乎无法破解。但随着量子计算机发展,有朝一日人们可能是有办法去分解的。但我们也相信,到了那个时候,一定也会有更先进的技术去进行加密。综上所述,目前人们是几乎无法破解RSA的,使用RSA算法加密的数据基本是安全的。

加密难度越高越好吗?

这个观点自然是不正确的,如果一个加密方式难度太高,那么加解密消耗的时间和资源就会更多,那就显得似乎有点不值得了。

当然,加密方法有非常多,这里只是选取了AES和RSA两个比较常见的算法进行讲解,更多的加密算法,可以自行Google去了解,由于篇幅有限(作者水平有限),这里不再进行赘述。

作者:@aubreyf 博客:https://xcao.top 文章如有错误或图片侵权,请联系作者。

加入QQ群1014345230一起划水吧
转载请注明来源及链接
如需商业用途请联系作者
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇