https
加密算法在大类上分为对称机密、非对称加密,都用来加密,只不过使用场景、性能、安全性方面有些不同。
对称加密
对称是对加密和解密而言的,也就是加密和解密的过程使用相同的密钥。
实现场景:落库加密、文件加密
对称加密算法:DES,3DES,AES,RC2,RC4,RC5
AES
最常用、最安全的对称加密算法是 AES,AES 还分为 AES128、AES192、ES256。
1、数字代表加密密钥的位数,位数越高,加密效果也就越好,更加不容易被破解。
2、数字位数越高,加密和解密过程中的计算量也会越大,内存占用也就更大,消耗的资源更多,需要的时间也就更长。
对称密码分为:序列密码(流密码),分组密码(块密码)
流密码
流密码是对信息流中的每一个元素(一个字母或一个比特)作为基本的处理单元进行加密,块密码是先对信息流分块,再对每一块分别加密。
例如:原文为1234567890,流加密即先对1进行加密,再对2进行加密,再对3进行加密,最后拼接成密文。
块密码
AES 是分组加密算法,大部分的加密算法都是分组加密算法。
块加密先分成不同的块,如1234成块,5678成块,90XX(XX为补位数字)成块,再分别对不同块进行加密,最后拼接成密文。
将需要加密的数据分成一个个的固定长度的分组,比如 128位一组,然后分别用算法对每一组进行加密,如果最后一组不足128位的话,还要用填充算法进行填充,保证达到128位。
常用的分组算法:CTR和GCM,CTR 和 GCM 有并行计算的能力,并且, GCM 还能额外提供对消息完整性、真实性的验证能力。
所以我们在某些地方可能看到 AES-128-GCM、AES-256-CTR 这样的写法,前面表示加密算法,后面代表分组算法。
对称加密的缺点
从算法层面来说已经足够安全,但是在密钥分发方面不容易管理。
因为加解密的密钥相同,加密的数据想要被别人使用,我就要把密钥告诉要使用的人。知道密钥的人、保存密钥的服务器越多,风险就越大。
所以在更复杂的场景下,会使用非对称加密。
非对称加密
1、非对称加密算法常见有RSA、ECC
2、非对称加密是计算机通信安全的基石,保证了加密数据不会被破解。
3、与对称加密算法不同,非对称加密算法需要两个密钥:公开密钥(publickey) 和私有密钥(privatekey)
4、公开密钥和私有密钥是一对
5、如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密。
6、如果用私有密钥对数据进行加密,只有用对应的公开密钥才能解密。
RSA
最常用的非对称加密算法是 RSA
RSA 有1024、2048、3072、4096、8129、16384 甚至更多位。目前 3072 位及以上的密钥长度被认为是安全的,曾经大量使用的 2048 位 RSA 现在被破解的风险在不断提升,已经不推荐使用了。
RSA 算法的性能要比对称加密 AES 算法差1000倍左右,使用不同的密钥进行加密和解密,必然要比使用相同密钥的算法复杂很多,由此肯定会带来性能上的开销。
使用场景:
对安全性要求更高的地方,例如:支付场景、数字证书、数据加密传输。
数字签名
数字签名是非对称密钥加密技术与数字摘要技术的应用。
数字签名的含义:在网络中传输数据时候,给数据添加一个数字签名,表示是谁发的数据,而且还能证明数据没有被篡改。
1、只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。
2、使用了公钥加密领域的技术来实现的,用于鉴别数字信息的方法。
3、一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证。
数字签名的主要作用:保证了数据的有效性(验证是谁发的)和完整性(证明信息没有被篡改)。
应用“数字证书”的实例:https协议
唠嗑广场
最近查人口数据,看到一些有意思的数据。 同时感慨中国、印度真是绝对的人口大国,希望未来越来越好。
人口面积数据 | 人口(万) | 面积(平方千米) |
---|---|---|
台北 | 267 | 2467 |
香港 | 741 | 1104 |
澳门 | 68.6 | 32.9 |
新加坡 | 545 | 728 |
剑桥 | 13 | 115.65 |
牛津 | 16.5 | 45.59 |
伦敦 | 890 | 1572 |
南非开普敦 | 401 | 2454 |
瑞士-苏黎世 | 42 | 91 |
加拿大温哥华 | 66 | 115 |