一谈到加密,想必大部份人第一个想到的应该就是密码,而且很大一部份人应该都认为只要我的密码够复杂就一定安全。

 

这种想法在大部份地方或时间都适用,但并不是绝对安全,其实安全不光要靠有复杂的密码,还很大程度上倚赖加密算法的完整性或安全性

 

下面就来聊聊加密学。

 

在计算机里,加密方法有很多,常见的加密算法有两大类,一类称为对称密码算法,另一种称为非对称密钥算法。对称密钥算法在日常使用中主要用到有DES,3DES,AES等,非对称密钥算法分为RSA,DH等。

 

先聊聊对称密钥算法

 

01 DES

 

DES(Data Encryption Standard)是美国国家标准和技术局(NIST)在1977年才有的数据加密标准,DES的思路是参照二战时期盟军缴获的德军恩格玛加密机

 

一个非常强悍的加密算法,使用非常广泛。

 

DES密钥长度为56位,分组长度为64位。为了提高加密强度,后来又发展出三重DES加密,即3DES

 

DES加密本身是一个很好的加密码算法,本身没有什么漏洞,从推出至今,经历几十年时间仍无人破解。

 

因为计算机处理速度不断刷新,老牌的DES因为密钥长度过短,容易受到爆力破解,因此才有了3DES。3DES可以认为是做了三次DES加密。

 

02 AES

 

AES(AdvancedEncryption Standard),高级加密标准,又称为Rijndael加密法,于1997年颁布,是美国联邦政府采用的一种区块加密标准。这个标准用来替代DES

 

2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一。

 

该算法为比利时密码学家JoanDaemen和Vincent Rijmen两人设计,结合两位作者的名字,以Rijndael命名。 AES算法使用128、192、256位密钥长度,加密强度比DES/3DES更强,而且,在实际应用中,AES支持软件和硬件加速,效率均非常高。

 

对称密钥算法的优点是使用相同的密码对数据进行加密和解密,速度快,加密后数据与原始数据大小相差不会太大。非常像解放前军事使用的电报,通讯双方使用相同的密码本进行加解密。

 

缺点是密钥数量是以参加者数量平方的速度增长的,因为每一对通信加密的密钥都可能不一样,管理起来非常麻烦,而且对称密钥算法不支持数字签名。

 

对称密钥算法非常不错,但是在实际的通讯中也有不少问题,比如,加密产生的密码应该如何安全地传递给接收方?让对方来拿?又或者通过快递?这些都不可取,因此,密钥传递成为大问题。

 

再来看看非对称密钥算法

 

01 RSA

 

RSA(Rivest,Shamir,Adelman)是1977年由罗纳德·李维斯特(RonRivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。当时他们三人都在麻省理工学院工作。RSA就是他们三人姓氏开头字母拼在一起组成的。

 

RSA被称为公共密钥加密系统,密钥长庋使用512-2048bit,密钥交换安全且迅速,是基于大素数因式分解的数学难题,对极大整数做因数分解,目前除了使用最短密钥长度加密的东西可能会受到爆力破解以外还没有一个有效的攻击手段可以对RSA进行有效破解,是一个非常安全的加密算法。目前广泛使用在HTTPS加密。

 

RSA提出者

 

02 DH

 

DH(Diffie-Hellman)算法,在百度百科中是这么解释的,一种确保共享KEY安全穿越不安全网络的方法,我觉得也OK。

 

该算法是1976年由Whitefield与Martin Hellman提出,称为Diffie-Hellman密钥交换协议/算法(Diffie-Hellman Key Exchange/AgreementAlgorithm)。

 

该算法只能够用于交换密钥,不能用于加密数据,是基于离散对数的数学难题,来看下它的难题:

 

 

对于上面这个式子,我觉得非常简单,上面除了有英文字母以外,还有大小写的英文字母………

 

DH算法被应用在VPN的密钥交换。

 

非对称密钥算法在一个系统内会生成两种密钥,分别为公钥和私钥,用公钥加密的东西只能用对应的私钥来解密,同理,用私钥加密的东西只能用其公钥进行解密。

 

每一个参加者进入加密系统都会得到这样的一对密钥。非对称密钥算法只能加密非常小的数据,一般用于加密对称密钥产生的密钥。它是一个非常安全的加密算法,解决了非对称密钥算法密码传递的问题。缺点是加密比较缓慢,密文比较长。

 

在实际应用中,都是两种加密算法结合的,用对称密钥算法对数据进行加密,产生的密钥使用非对称密钥算法来加密传输。

 

 

常见的解决方案

 

1、发送方将需要加密的数据利用对称密钥算法进行加密,得到加过密的密文与一个密钥。

2、发送方用非对称密钥算法将密钥使用接收方提供的公钥进行加密,得到一个加过密的密钥。

3、发送方将加过密的密钥与密文一起发送给接收方。

4、接收方接收到数据后先拿出被加过密的密钥,用自己的私钥对其进行解密得到明文的密钥。

5、再利用解密后的密钥对密文使用与发送方加密时使用的相同的对称密钥算法对其进行解密能够得到明文。

这样,就可以解决数据传输的安全问题了。

 

——END——

 

▍老钟的课

 

 

——END——

技术交流群1:

添加班主任微信 qiuzhiquanquanqqls000

加入微信群

 

技术交流群2:

添加班主任QQ 17246989941752856301

加入QQ群(240920680