爬虫学习11之js逆向

发布时间 2023-03-28 22:01:30作者: 興華

一、 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