算法加密-概念&分类&类型
1.单向散列加密 -MD5
优点(以MD5为例):
方便存储,损耗低:加密/加密对于性能的损耗微乎其微。
缺点:
存在暴力破解的可能性,最好通过加盐值的方式提高安全性,此外可能存在散列冲突。我们都知道MD5加密也是可以破解的。
常见的单向散列加密算法:
MD5 SHA MAC CRC
解密:
解密需求:密文即可,但复杂明文可能解不出
解密方式:碰撞
2.对称加密 -AES
优点:
算法公开、计算量小、加密速度快、加密效率高。
缺点:
发送方和接收方必须商定好密钥,然后使双方都能保存好密钥,密钥管理成为双方的负担。
常见的对称加密算法:
DES AES RC4
解密:
解密方式:使用密匙(key)解密,算法逆向,大多数时候还需要偏移量
3.非对称加密 -RSA
优点:
与对称加密相比,安全性更好,加解密需要不同的密钥,公钥和私钥都可进行相互的加解密。
缺点:
加密和解密花费时间长、速度慢,只适合对少量数据进行加密。
常见的非对称加密算法:
RSA RSA2 PKCS
解密:
解密方式:使用公钥和私钥都可以解密
加密解密-识别特征&解密条件
1.MD5密文特点:
特点:
由数字“0-9”和字母“a-f”所组成的字符串
固定的位数 16 和 32位
解密需求:密文即可,但复杂明文可能解不出
2. BASE64编码特点:
特点:
大小写区分,通过数字和字母的组合
一般情况下密文尾部都会有两个等号,明文很少的时候则没有
明文越长密文越长,一般不会出现”/“”+”在密文中
3.AES、DES密文特点:
特点:同BASE64基本类似,但一般会出现”/“和”+”在密文中
解密需求:密文,模式,密钥Key,偏移量,条件满足才可解出
4.RSA密文特点:
特点:特征同AES,DES相似,但是长度较长(固定在一个范围内),每次加密后的密文都不一样但都能还原解密出来
解密需求:密文,公钥加密对应私钥解密,私钥加密对应公钥解密
解密实例-密文存储&数据传输
安全测试解密逻辑:
密文-有源码:
直接看源码分析算法(后端必须要有源码才能彻底知道)
密文-没有源码:
1.猜是什么加密
2.看前端JS(加密逻辑在前端):F12或抓包看前端js代码逻辑
实例1:mysql数据库password字段被加密了,查看源码发现加密的逻辑(前端处理)
加密代码段:
$password = md5(md5($password).$salt)
已知:
- 明文:123456
- salt:3946d5
加密逻辑:
首次加密:md5(123456) = e10adc3949ba59abbe56e057f20f883e
加盐: .salt = e10adc3949ba59abbe56e057f20f883e3946d5 ( . 为连接符,把字符3946d5加到后面)
最终结果: md5(e10adc3949ba59abbe56e057f20f883e3946d5) = d7192407bb4bfc83d28f374b6812fbcd
php解密脚本:碰撞
1 |
|
实例2:前端登录输入的密码被进行md5加密,加密逻辑在js文件中(前端处理)
zblog
实例3:sql注入参数使用AES加密(后端处理)
https://mozhe.cn/bug/detail/110
注入时需要先进行加密分析,再把注入语句进行加密然后进行传参