0x01单向散列算法加密-MD5 SHA MAC CRC—-以MD5为例
单向散列算法,又称杂凑算法,就是把任意输入消息字符串变成固定长度的输出串的一种函数。对于任意一个输出,计算出杂凑值是很容易的,并且并不需要公钥秘钥、偏移量之类的,因此解密需求只要有密文即可
算法优点:方便存储,损耗低:对于性能的损耗微乎其微
缺点即存在暴力破解的可能性,最好通过加盐的方式提高安全性。
此外可能存在散列冲突。因为散列算法是一种压缩映射,散列表的空间小于输入值的空间,因此可能会造成不同的输入得到相同输出的情况。
MD5加密算法的原理与实现https://blog.csdn.net/forgotaboutgirl/article/details/7258109
0x02 对称加密算法 DES AES RC4
对称加密的优点是算法公开、计算量小、加密速度快,效率高
缺点是发送方与接收方必须商定好秘钥(双方秘钥一样),因此管理秘钥成为双方的负担。
解密需求:以AES DES为例 需要 密文 模式 秘钥(key) 偏移量 解密是利用逆向的算法解密,因此只要有上面的所有参数,是可以百分百解出来的
PHP中AES加密模块EncryptionTool是使用AES-128-ECB-Pkcs7,传入的key是1234567891234567 进行AES加密,最后以base64的编码输出。ECB模式没有偏移量。
0x03非对称加密–RSA RSA2 PKCS
上课讲过的加密模式。
与对称加密相比,安全性更好。因为加解密需要不同的秘钥,公钥和私钥分别进行加、解密
缺点是加密和解密花费时间较长,速度慢,只适合少量的数据进行加密。
特点:添加公钥和私钥之后对明文进行加密,每次加密得到的密文不一样。
通过上课讲的原理,可以知道只需密文 和私钥,就可以解密
0x04识别特征
MD5
1.由数字0-9和字母a-f组成的字符串
2.固定16位或32位
Base64
1.大小写区分,数字字母组合,英文字母居多
2.一般在尾部会有“==”或“=”,明文很少的时候则没有
3.明文越长,越不会出现“/”在密文中(基本上不会有),而AES、DES会有斜杠在里面(以base64输出)
4.明文越长 编码越长
RSA
1.密文长度与秘钥的位长相同。
0x05拿到一个密文之后,没有源码,该怎么入手去解密?
1 观察密文特征
2 听天由命
我草你妈 再也不水群了 明天好好学