一、 js逆向之MD5加密算法
MD5:一种哈希算法。
哈希算法,即hash,又叫散列算法,是一类把任意数据转换为定长(或限制长度)数据的算法统称。
特点:
1. 长度固定:固定生成16进制的32位或者16位的数据;
2. 易计算:开发者很容易理解和做出加密工具;
3. 细微性:一个文件,不管多大,小到几k,大到几G,你只要改变里面某个字符,那么都会导致MD5值改变;
4. 不可逆性:你命名知道密文和加密方式,你却无法反向计算出原密码。
MD5并非不可破解,其中可以通过撞库破解。
其破解原理:
1. 建立一个大型的数据库,把日常的各个语句,通过MD5加密成为密文,不断的积累大量的句子,放在一个庞大的数据库里;
2. 比如一个人拿到了别人的密文,想去查询真实的密码,就需要那这个密文去到提供这个数据库的公司网站去查询。
注: 简单说就是通过收集各类语句的MD5加密密文,并以键值对方式存入数据库中;一旦拿到密文,想知道真实密码时,可通过数据库查询对应键值对,查询对应真密码。
关于MD5加盐:
比如QQ密码是“123456”,1. 得到的MD5是:e10adc3949ba59abbe56e057f20f883e, 2. 一个人截取到这个密文,那么通过撞库肯定统计撞出123456,3. 我们要做的就是加盐,QQ的密码还是123456,然后把QQ密码加上我们特定的字符串才计算MD5,所以密码还是那个密码,但是变成求123456密码 加密987的MD5值,然后再得到MD5,那么这个MD5起码可以确认那个数据不会有。
HTML网页中MD5的使用
<script src="https://cdn.bootcss.com/blueimp-md5/1.1.1/js/md5.js"></script>
二、对称加密DES/AES
对称加密,就是加密和解密用到的密钥是相同的,这种加密方式速度非常快,适合经常发送数据的场合。缺点是密钥的传输比较麻烦。
DES/AES:
DES全称为Data Encryption Standard,即数据加密标准,是一种利用密钥加密的块算法
AS全称为Advanced Encryption Standard,即高级加密标准,又称Rijndate加密法,是美国联邦政府采用的一种区块加密标准。


AES五种加密模式:
1. 电码本模式(Electronic Codebook Book,ECB)
这种模式是将整个明文分成若干段相同的小段,然后对每一小段进行加密;
2. 密码分组连接模式(Cipher Block Chaining,CBC)
这种模式是先将明文切分成若干小段,然后每一小段与初始块或者上一段的密文段进行异或运算后,在与密钥进行加密;
3. 计算器模式(Counter,CTR)
计算器模式不常见,在CTR模式中,有一个自增的算子,这个算子用密钥加密之后的输出和明文异或的结果得到密文,相当于一次一密。这种加密方式简单快速,安全可靠,而且可以并行加密,但是在计算器不能维持很长的情况下,密钥只能使用一次。
4. 密码反馈模式(Cipher FeedBack,CFB)
这种模式较复杂。
5. 输出反馈模式(Output FeedBack, OFB)
这种模式较复杂。
DES与AES的区别
1. 加密后的密文长度不同:DES加密后的密文长度是8的整数倍;AES加密后的密文长度是16的整数倍;
2. 应用场景不同: 企业级开发使用DES足够安全;如果要求高使用AES;
3. DES和AES切换只需修改DES.XX <==> AES.XX




三、非对称加密之RSA
四、自定义加密Pyexecjs