我是程序员小贱
隐私保护?不是吓唬大家,信息是透明的兄die,不过也要尽量去维护个人的隐私吧,今天学习对称加密和非对称加密。大家先读读这个字"钥",是读"yao",还是读"yue"。看下图
一 、对称加密
对称加密,顾名思义,加密方与解密方使用同一钥匙(密钥)。具体一些就是,发送方通过使用相应的加密算法和密钥,对将要发送的信息进行加密;对于接收方而言,使用解密算法和相同的密钥解锁信息,从而有能力理解对方的信息。
1 常见的对称加密算法
无论是数据库的信息存储,还是为了避免用户的Cookie发生泄漏,通常都会使用相应的加密算法进行加密,尽最大能力的去保护敏感信息。
DES
DES使用的密钥表面上是64位的,然而只有其中的56位被实际用于算法,其余8位可以被用于奇偶校验,并在算法中被丢弃。因此,DES的有效密钥长度为56位,通常称DES的密钥长度为56位。假设秘钥为56位,采用暴力破Jie的方式,其秘钥个数为2的56次方,那么每纳秒执行一次解密所需要的时间差不多1年的样子。当然,没人这么干。DES现在已经不是一种安全的加密方法,主要因为它使用的56位密钥过短。
IDEA
国际数据加密算法(International Data Encryption Algorithm)。秘钥长度128位,优点没有专利的限制。
AES
当 DES 被破解以后,没过多久推出了 AES 算法,提供了三种长度供选择,128 位、192 位和 256,为了保证性能不受太大的影响,选择 128 即可。
SM1和SM4
之前几种都是国外的,我们国内自行研究了国密 SM1和SM4。其中S都属于国家标准,算法公开。优点就是国家的大力支持和认可
总结下几种
二、 非对称算法
在对称加密中,发送方与接收方使用相同的密钥。那么在非对称加密中则是发送方与接收方使用的不同的密钥。其主要解决的问题是防止在秘钥协商的过程中发生泄漏。比如在对称加密中,小蓝将需要发送的消息加密,然后告诉你密码是123balala,ok,对于其他人而言,很容易就能劫持到密码是123balala。那么在非对称的情况下,小蓝告诉所有人密码是123balala,对于中间人而言,拿到也没用,因为没有私钥。所以,非对称密钥其实主要解决了密钥分发的难题。
如下图
其实我们经常都在使用非对称加密,比如使用多台服务器搭建大数据平台hadoop,为了方便多台机器设置免密登录,是不是就会涉及到秘钥分发。再比如搭建docker集群也会使用相关非对称加密算法。
1 常见的非对称加密
RSA
(RSA 加密算法,RSA Algorithm)
优势是性能比较快,如果想要较高的加密难度,需要很长的秘钥。
ECC
基于椭圆曲线提出。是目前加密强度最高的非对称加密算法
SM2
同样基于椭圆曲线问题设计。最大优势就是国家认可和大力支持。
三种对比
三 散列算法
这个大家应该更加熟悉了,比如我们平常使用的MD5校验,在很多时候,我并不是拿来进行加密,而是用来获得唯一性ID。在做系统的过程中,存储用户的各种密码信息,通常都会通过散列算法,最终存储其散列值。
1 常见的散列
MD5
MD5 可以用来生成一个 128 位的消息摘要,它是目前应用比较普遍的散列算法。虽然,因为算法的缺陷,它的唯一性已经被破解了,但是大部分场景下,这并不会构成安全问题。但是,如果不是长度受限(32 个字符),还是不推荐你继续使用 MD5 的。
SHA
安全散列算法。SHA分为SHA1和SH2两个版本。该算法的思想是接收一段明文,然后以一种不可逆的方式将它转换成一段(通常更小)密文,也可以简单的理解为取一串输入码(称为预映射或信息),并把它们转化为长度较短、位数固定的输出序列即散列值(也称为信息摘要或信息认证代码)的过程。
SM3
国密算法SM3.加密强度和SHA-256想不多。主要是收到国家的支持。
总结
至此,总结下,大部分情况下使用对称加密,具有比较不错的安全性。如果需要分布式进行秘钥分发,考虑非对称。如果不需要可逆计算则散列算法。因为这段时间有这方面需求,就看了一些这方面的资料,入坑信息安全,就怕以后洗发水都不用买。