1.前言
本文主要分享一下笔者过去曾使用过,或者了解过的加密方式。
"了解"而非”熟悉“,更适合表达文章的难度级别,底层的原理笔者也是一脸懵逼,更别提加密用到了什么算法。
本文只能浅谈一下不同的加密方式中的,基本介绍,加密特点,应用场景。
如有理解错误,欢迎指出。
实例将会在后续githug给出,相信网上demo很多。如找不到,可留言我提供。
2.加密是啥
首先加密就是为了不暴露我们原本的信息,将明文加密为密文,并通过通信路径发送。 中途窃听者不会阅读或理解课文。 在接收端接收时,密文被解密为明文。
加密更加保证了程序的安全性。
3.加密方式
在汇总加密方法之前,先普及一下加密方法吧。
对称加密,即是用单个密钥加密和解密数据。其优点就是速度快。由于其速度快,对称性加密通常在消息发送方需要加密大量数据时使用。
他的优点就是算法公开、计算量小、加密速度快、加密效率高。
但有个缺陷就是,发件人和收件人都必须使用相同的密钥。 你必须向接收者共享密钥。
非对称加密,就是针对对称加密缺陷的一种改进,非对称加密算法是一种密钥的保密方法。
他需要两个密钥,公钥与私钥。如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密。如果用私有密钥对数据进行加密,只有用对应的公开密钥才能解密。这就是非对称加密。
他比"对称加密"更加安全,但是效率值暂时还不上对称加密。
4.加密方法
MD5
首先介绍一下MD5。
MD5并不属于对称加密,也不属于非对称加密,它甚至算不上加密算法。原则上他是不可逆的。只允许你加密,不允许你解密。
那么你可能会有疑问,居然不能解密,用来干嘛?他的应用场景还是挺广泛的。
场景
我们的系统,需要暗号"芝麻开门"才有权限操作。这时候你不能直接填入"芝麻开门",或者告诉别人暗号是"芝麻开门"。这样别人就知道了你的暗号了。
那么怎么办呢?这时候可以用我们的"芝麻开门"进行md5加密。加密后可能是sdadgjsdgjsdagjsdggdjsag(笔者乱敲的)的东西。这时候门卫只需要对比你一下,你们加密后的值是否一样就可以给你权限。门户自己也根本不知道"暗号"是什么。
特点
MD5加密有哪些特点:
-
压缩性:任意长度的数据,算出的MD5值长度都是固定的。
-
容易计算:从原数据计算出MD5值很容易。
-
抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。
-
强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。
其他
原则上他是不可逆的。但是很多时候,不跟着原则走。网上有关MD5解密的网站数不胜数,我们还是不能以他为唯一标准,可以尽量多加密几次。
DES
DES是一种对称加密算法,但是近些年使用越来越少,因为DES使用56位密钥,在现在随时可被还原。
基本给AES替代,但是本文还是简单的提及一下。
AES具有比DES更好的安全性、效率、灵活性,所以对称加密优先采用AES。
AES
又称"高级加密标准",后续取代了DES。
我们可以利用AES工具先生成一个密匙(可到:tool.chacuo.net/cryptaes生成 )。然后
Aes效率还是比较高,可以说是最普及的对称加密。
场景
程序之间,传递不适合明文传输的报文
特点
- 加密速度快
- 适合大量数据
- 处理数据后可复原
RSA
RSA是非对称加密算法代表作。
RSA的安全性依赖于大数分解,小于1024位的N已经被证明是不安全的,而且由于RSA算法进行的都是大数计算,使得RSA最快的情况也比DES慢上倍,这是RSA最大的缺陷,因此通常只能用于加密少量数据或者加密密钥,但RSA仍然不失为一种高强度的算法。 你可以这么去理解RSA的原理:根据数论,寻求两个大素数比较简单,而将它们的乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。
值得一提的时候,RSA有长度限制,使用时如果数据有可能过长,要提前做好分段加密
特点
优点:
- 安全,秘钥不暴露,公钥随便给都没事
缺点:
- 密钥尺寸大,,一般用来加密少量数据,比如DES的密钥。
- 加解密速度慢
- 实现分段加密
- 加密后的数据大
场景
发送重要数据给客户时,防止中间有人拦截修改数据,这时候我们可以使用rsa。