Skip to content

Latest commit

 

History

History
150 lines (71 loc) · 6.2 KB

对称加密和非对称加密.md

File metadata and controls

150 lines (71 loc) · 6.2 KB

对称加密和非对称加密

对称加密

在对称加密中,数据被转换为不可读的密文,只有使用相同的密钥才能将其还原为原始的明文。

发送方和接收方在进行加密和解密操作时使用相同的密钥。

常见的对称加密算法:
  1. DES(Data Encryption Standard):DES是一种使用56位密钥的对称加密算法,已经被认为是不安全的,因为密钥长度较短。

  2. 3DES(Triple Data Encryption Standard):3DES是对DES算法的改进,通过多次应用DES算法增加密钥长度,提高了安全性。

  3. AES(Advanced Encryption Standard):AES是一种广泛使用的对称加密算法,它支持不同的密钥长度(128位、192位和256位),被认为是目前最安全和最常用的对称加密算法之一。

自己实现一个简单的对称加密解密算法:
异或方式进行加密解密:

异或的概念:异或运算是在二进制数中的一种按维进行计算的逻辑运算符。

其真值表为:

左操作数 右操作数 结果
0 0 0
0 1 1
1 0 1
1 1 0

总结: 左操作数和右操作数不同则为1,否则为0。

好记的方法: 男人和女人在一起才能生孩子(1),男男和女女都不能生孩子(0)。

异或操作运算符很有意思,当A与B异或成C后,C与A再次异或可以得到B,C与B再次异或后可以得到A。

那么在密码学里面可以这么运用

当小红想发送数据小绿,但是为了防止发送的数据被中间人查看或者篡改,那么他们需要把数据进行加密发送。

于是小红和小绿商量用异或的方式进行数据加密传输,同时约定 异或值为 1111 (2进制)

下面的例子,数据均以二进制展示

step1:

小红 发送 1010,将1010 与 1111 异或 -> 0101

step2:

小绿 收到数据 0101 结果后,将0101 与 1111 异或 -> 1010

于是小红和小绿就能进行愉快的通讯了。

但是好景不长,出现了一个捣蛋的中间人,先叫他皮蛋把。

皮蛋虽然无法将加密的密文进行解密,但是他可以把拦截到的密文进行随意的修改再发送给小红/小绿,小红/小绿收到的信息可能变成了一坨乱码。

其次,如果皮蛋某种情况下偷听到了 加密的值(异或值)。那么对小红/小绿 简直是毁灭性的打击。

以上这两种情况,对于小红/小绿都是不可接受的结果。

非对称加密

在非对称加密中,有两个密钥:公钥和私钥。公钥是公开的,可以被任何人获取和使用,而私钥是保密的,只有密钥的拥有者可以访问和使用。

公钥用于加密数据,而私钥用于解密数据。数据加密后,只能通过相应的私钥进行解密。这种加密方法提供了更高的安全性,因为私钥只在密钥的拥有者手中,并且不需要共享给其他人。

常见的非对称加密算法包括:

  1. RSA:RSA是一种广泛使用的非对称加密算法,基于大数分解的数学原理。

  2. ECC(Elliptic Curve Cryptography):ECC是一种基于椭圆曲线的非对称加密算法,具有相同安全性的情况下使用更短的密钥长度,因此计算效率更高。

具体RSA算法文章机器非对称加密原理可参考文章:

密码学笔记 - 阮一峰的网络日志 (ruanyifeng.com)

RSA算法原理(一) - 阮一峰的网络日志 (ruanyifeng.com)

RSA算法原理(二) - 阮一峰的网络日志 (ruanyifeng.com)

巧就巧在,加密是用公钥,解密是用私钥。如果有人尝试破解私钥,目前只能使用暴力破解,在当今计算机算力没有质的飞越时,那么要使用暴力破解1024位RSA加密的结果是相当困难的。

运用在之前提到的小红/小绿的场景中。

小绿作为做为服务端,生成私钥和公钥;公钥暴露给所有人,私钥保存好。

小红在拿到小绿的公钥后,把需要发送的数据用小绿的公钥进行计算得到结果并发送给小绿。

小绿拿到结果后,使用私钥进行解密。

或许你会有疑问,这样虽然做到了加密,但是这仅仅是小红向小绿发送了加密数据了,小绿如果要向小红发送数据改如何发送呢(也就是说,这仅仅是单方面的加密,毕竟通讯肯定会有双向通讯的场景)?

别着急,咱们可以这样,小红和小绿可以商量第一步先使用非对称加密,后续都使用对称加密。

step1:

小红将 对称加密的秘钥使用小绿的公钥进行加密。

step2:

小绿用私钥解密后,得到小红 发送过来的对称加密秘钥。

step3:

小绿把数据 使用 对称加密的秘钥进行数据加密并发送给小红。

step4:

小红收到数据后,可以根据秘钥将数据进行解密。

至此,只要小绿能够保存好私钥,那么小红和小绿的通讯是安全的。

问:为什么要先采用非对称加密,后面采用对称加密?

答:非对称加密对性能有影响。

问:有没有可能被中间人查看或篡改数据,如果可以的话,如何防止?

答:可以查看,但是是加密的。可以篡改(因为小绿的公钥是公开的)。如何防止请看数字签名和数字证书

总结

对称加密:

​ 优点: 相比于非对称加密,对称加密的加解密速度更快。加密解密方式相对简单。

​ 缺点: 由于秘钥需要双方都知道,所以双方中只要有一个泄露了秘钥,那么就可以伪造数据发送了。无法判断数据是否被篡改。

非对称加密:

​ 优点: 只需要保留公钥给调用方,只需要被调用方保存好私钥即可,降低了泄露秘钥(私钥)的概率。

​ 缺点: 相比于对称加密设计复杂,非对称加密算法对加密数据的长度有一定的限制,一般只能加密较短的数据。无法判断数据是否被篡改。