“探秘JS加密算法:MD5、Base64、DES/AES、RSA你都知道吗?”

简介: “探秘JS加密算法:MD5、Base64、DES/AES、RSA你都知道吗?”

1、什么是JS、JS反爬是什么?JS逆向是什么?

JS: JS全称JavaScript 是互联网上最流行的脚本语言,这门语言可用于 HTML 和 web,更可广泛用于服务器、PC、笔记本电脑、平板电脑和智能手机等设备。JavaScript 是一种轻量级的编程语言。JavaScript 是可插入 HTML 页面的编程代码。JavaScript 插入 HTML 页面后,可由所有的现代浏览器执行JS反爬: JS反爬是指爬虫在获取网页数据时,遇到了通过JavaScript代码爬实现的反措施。JS反爬技术的实现方式包括动态渲染、异步加载、验证码、IP限制等多种方式。这些技术可以有效地防止爬虫的抓取,保护网站的数据安全。 JS逆向: JS逆向是指通过分析和破解JavaScript代码,获取反爬措施的规则和实现方式,从而绕过反爬措施,实现爬虫的抓取。JS逆向需要具备一定的JavaScript编程能力和代码分析能力,对于爬虫开发者来说是一项高级的技能。 需要注意的是,进行JS逆向可能会涉及到法律风险和道德问题,因此在进行爬虫开发时,应该遵守相关法规和道德规范,避免侵犯他人的合法权益。 <a name="FqXCK"></a>

2、JS逆向的大致流程

  1. 分析目标网站的反爬措施:使用浏览器开发者工具或网络抓包工具分析目标网站的JavaScript代码和网络请求数据,了解反爬措施的实现方式和规则。常见的反爬措施包括动态渲染、异步加载、验证码、IP限制等。
  2. 理解和分析JavaScript代码:使用代码编辑器或开发者工具等工具,分析网站的JavaScript代码,了解其运行原理、代码结构和实现方式。这可以帮助你找到反爬措施的规则和实现方式,从而更好地绕过它们。
  3. 绕过反爬措施:根据分析结果,采用相应的技术和方法绕过反爬措施。比如,对于动态渲染的网页,可以使用无头浏览器(如Selenium)模拟浏览器的操作,从而获取渲染后的网页数据;对于异步加载的网页,可以使用JavaScript库(如Puppeteer)模拟浏览器的异步请求,从而获取异步加载后的数据;对于验证码的网站,可以使用打码平台或自动识别技术(如OCR)来识别验证码。
  4. 调试和优化:进行调试和优化,确保爬虫程序能够稳定地运行,并且能够在反爬措施更新后及时进行适配。

需要注意的是,JS逆向需要具备一定的JavaScript编程能力和代码分析能力,不同的网站可能有不同的反爬措施和实现方式,因此需要根据具体情况采用不同的技术和方法进行绕过。同时,在进行JS逆向时,需要遵守相关法规和道德规范,避免侵犯他人的合法权益。 <a name="UJgyk"></a>

3、逆向的环境搭建

<a name="SJvg1"></a>

3.1、安装node.js

下载网站:Download | Node.js 参考网站:Node.js安装与环境配置_各自安好、的博客-CSDN博客<a name="ww4wp"></a>

3.2、安装js代码调试工具(vscode)

下载网站: Download Visual Studio Code - Mac, Linux, Windows 参数网站:https://www.cnblogs.com/csji/p/13558221.html 运行js代码插件: 在VSCode中直接运行js代码 - 简书<a name="uj7Ex"></a>

3.3、安装PyExecJs模块

PyExecJS用于实现在Python中运行JavaScript代码的功能,移植自Ruby的ExecJS库。 安装命令:pip install PyExecJs -i https://pypi.douban.com/simple<a name="VLXRj"></a>

4、JS常见加密算法

<a name="GRNgn"></a>

4.1、Base64算法

base64是一种用64个字符来表示任意二进制数据的方法。 base64使用 A--Z a--z 0--9 + / 这64个字符实现对数据的加密。 <a name="UpuIe"></a>

4.2、MD5算法

MD5是一种被广泛使用的线性散列算法,可以产出一个128位(16字节)的散列值(hash value),用于确保信息传输完整的一致性。且MD5加密之后产生的是一个固定长度(32位或16位)数据。 MD5参考网址: https://cdn.bootcdn.net/ajax/libs/blueimp-md5/1.0.1/js/md5.js md5破解网址:md5在线解密破解,md5解密加密 或者 md5在线加密解密 补充: 为了提高密码的安全性 一般会在密码后面加上一个随机数或者是时间戳 这个随机数或者是时间戳 我们一般称之为盐 <a name="kbODp"></a>

4.3、DES/AES算法

DES对称加密,是一种比较传统的加密方式,其加密运算、解密运算使用的是同样的密钥,信息的发送者。 和信息的接收者在进行信息的传输与处理时,必须共同持有该密钥(称为对称密码),是一种对称加密算法。一般来说加密用的是encrypt()函数,解密用的是decrypt()函数。 AES/DES加密解密网址: 在线加密/解密,对称加密/非对称加密<a name="ZuF66"></a>

4.2.2 AES与DES的区别
  • 加密后密文长度不同
  • DES加密后密文长度是8的整数倍
  • AES加密后密文的长度是16的整数倍
  • 安全度不同
  • 一般情况下DES足够安全
  • 如果要求高可以使用AES
  • DES和AES切换只需要修改CryptoJS.DES =>CryptoJS.AES <a name="mFwmr"></a>

4.4、RSA算法

RSA加密算法是一种非对称加密算法。在公开密钥加密和电子商业中RSA被广泛使用。有两把对应密钥,公钥和私钥。用公钥加密只能用私钥解开,用私钥加密只能用公钥解密。 RSA加密解密网址:RSA加密、RSA解密 - 在线工具 - OKTools

  • 公开密钥(publickey:公钥)
  • 私有密钥(privatekey:私钥)
  • 公钥和私钥是一对 <a name="d0Y92"></a>

4.5 JS算法注意点

在JS逆向中,并不是所有的都存在加密算法 有时候 不需要去分析出是什么加密算法直接扣出代码即可。<a name="P6Sfm"></a>

5、chrome常见调试技巧

  1. 断点调试:在需要调试的JavaScript代码行上设置断点,当代码执行到该执行时,会暂停执行,可以查看当前变量和调用栈等信息。可以通过点击行号来设置断点。
  2. 控制台调试:在控制台面板中可以执行JavaScript代码,可以查看和修改数量的值,以及调用函数和方法等。可以使用console.log()、console.error()等方法来输出调试信息。 <a name="oTCbg"></a>

6、Base64编码详讲

<a name="W0EPv"></a>

Base64编码由来

为什么会有Base64编码呢?因为有些网络传送渠道并不支持所有的字节,例如传统的邮件只支持可见字符的传送,像ASCII码的控制字符就不能通过邮件传送。这样用途就受到了很大的限制,比如图片二进制流的每个字节不可能全部是可见字符,所以就传送不了。最好的方法就是在不改变传统协议的情况下,做一种扩展方案来支持二进制文件的传送。把不可打印的字符也能用可打印字符来表示,问题就解决了。Base64编码应运而生,Base64就是一种基于64个可打印字符来表示二进制数据的表示方法。 <a name="tvMMh"></a>

Base64编码原理分析参考

https://www.cnblogs.com/luguo3000/p/3940197.html<a name="iZ5Kp"></a>

Base64在python中的应用
import base64
"""将字符串转换成base64编码"""
string = "https://www.baidu.com"
temp_b = string.encode("utf-8")  import base64
"""将字符串转换成base64编码"""
string = "https://www.baidu.com"
temp_b = string.encode("utf-8")  # 将字符串转换为二进制
print(temp_b)
content_b = base64.b64encode(temp_b)
print(content_b)
str_result = content_b.decode('utf-8')
print(str_result)
"""将Base64编码还原为字符串"""
str_result = "aHR0cHM6Ly93d3cuYmFpZHUuY29t"
my_str = base64.b64decode(str_result).decode("utf-8")
print(my_str)
"""处理base64编码的图片"""
import base64
src = "data:image/jpg;base64,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"
# 切割字符串,获取后面图片数据部分
image_data = src.split(',')[1]
.jpg','wb') as f:
    f.write(image)
<a name="WHFAZ"></a>

7、MD5详讲

<a name="fWjGY"></a>
一、MD5加密是什么?

MD5是一种常用的消息摘要算法,它可以将任意长度的消息压缩成一个128位的哈希值。MD5算法广泛应用于数字签名、数据完整性校验、密码学等领域。 MD5(Message-Digest Algorithm 5)是一种常用的哈希算法,它将任意长度的消息压缩成一个128位的消息摘要(即哈希值),并且具有不可逆性、唯一性、抗碰撞性等特点。 <a name="bEnci"></a>

二、MD5加密解密的原理?

MD5算法的原理是将输入的消息分成512位的数据块,每个数据块再分成16个32位的小块,然后通过一系列的位运算和非线性函数,对每个小块进行处理,最终得到一个128位的哈希值。由于MD5算法的设计,即使输入的消息只有微小的变化,也会导致输出的哈希值发生巨大的变化,因此可以用来验证数据的完整性和真实性。 <a name="vCvKT"></a>

三、MD5算法的用途

数据完整性验证:通过比较两个文件的MD5值,可以判断它们是否相同,从而验证文件的完整性。 密码加密:将用户的密码进行MD5加密后,可以保证用户密码的安全性,即使数据库被攻击,攻击者也无法直接获取用户的密码。 数字签名:数字签名是一种保证数据完整性和真实性的技术,MD5算法可以用来生成数字签名。 安全访问控制:MD5算法可以用来生成安全访问控制的密钥,从而保证访问控制的安全性。


相关文章
|
7月前
|
运维 监控 JavaScript
内网网管软件中基于 Node.js 的深度优先搜索算法剖析
内网网管软件在企业网络中不可或缺,涵盖设备管理、流量监控和安全防护。本文基于Node.js实现深度优先搜索(DFS)算法,解析其在网络拓扑遍历中的应用。通过DFS,可高效获取内网设备连接关系,助力故障排查与网络规划。代码示例展示了图结构的构建及DFS的具体实现,为内网管理提供技术支持。
125 11
|
3月前
|
存储 Java 数据安全/隐私保护
Java技术栈揭秘:Base64加密和解密文件的实战案例
以上就是我们今天关于Java实现Base64编码和解码的实战案例介绍。希望能对你有所帮助。还有更多知识等待你去探索和学习,让我们一同努力,继续前行!
316 5
|
4月前
|
监控 算法 JavaScript
公司局域网管理视域下 Node.js 图算法的深度应用研究:拓扑结构建模与流量优化策略探析
本文探讨了图论算法在公司局域网管理中的应用,针对设备互联复杂、流量调度低效及安全监控困难等问题,提出基于图论的解决方案。通过节点与边建模局域网拓扑结构,利用DFS/BFS实现设备快速发现,Dijkstra算法优化流量路径,社区检测算法识别安全风险。结合WorkWin软件实例,展示了算法在设备管理、流量调度与安全监控中的价值,为智能化局域网管理提供了理论与实践指导。
125 3
|
4月前
|
存储 监控 算法
公司内部网络监控中的二叉搜索树算法:基于 Node.js 的实时设备状态管理
在数字化办公生态系统中,公司内部网络监控已成为企业信息安全管理体系的核心构成要素。随着局域网内终端设备数量呈指数级增长,实现设备状态的实时追踪与异常节点的快速定位,已成为亟待解决的关键技术难题。传统线性数据结构在处理动态更新的设备信息时,存在检索效率低下的固有缺陷;而树形数据结构因其天然的分层特性与高效的检索机制,逐渐成为网络监控领域的研究热点。本文以二叉搜索树(Binary Search Tree, BST)作为研究对象,系统探讨其在公司内部网络监控场景中的应用机制,并基于 Node.js 平台构建一套具备实时更新与快速查询功能的设备状态管理算法框架。
133 3
|
5月前
|
存储 JavaScript 前端开发
在NodeJS中使用npm包进行JS代码的混淆加密
总的来说,使用“javascript-obfuscator”包可以帮助我们在Node.js中轻松地混淆JavaScript代码。通过合理的配置,我们可以使混淆后的代码更难以理解,从而提高代码的保密性。
445 9
|
6月前
|
监控 算法 JavaScript
企业用网络监控软件中的 Node.js 深度优先搜索算法剖析
在数字化办公盛行的当下,企业对网络监控的需求呈显著增长态势。企业级网络监控软件作为维护网络安全、提高办公效率的关键工具,其重要性不言而喻。此类软件需要高效处理复杂的网络拓扑结构与海量网络数据,而算法与数据结构则构成了其核心支撑。本文将深入剖析深度优先搜索(DFS)算法在企业级网络监控软件中的应用,并通过 Node.js 代码示例进行详细阐释。
115 2
|
6月前
|
存储 算法 JavaScript
基于 Node.js 深度优先搜索算法的上网监管软件研究
在数字化时代,网络环境呈现出高度的复杂性与动态性,上网监管软件在维护网络秩序与安全方面的重要性与日俱增。此类软件依托各类数据结构与算法,实现对网络活动的精准监测与高效管理。本文将深度聚焦于深度优先搜索(DFS)算法,并结合 Node.js 编程语言,深入剖析其在上网监管软件中的应用机制与效能。
93 6
|
6月前
|
JavaScript 前端开发 算法
JavaScript 中通过Array.sort() 实现多字段排序、排序稳定性、随机排序洗牌算法、优化排序性能,JS中排序算法的使用详解(附实际应用代码)
Array.sort() 是一个功能强大的方法,通过自定义的比较函数,可以处理各种复杂的排序逻辑。无论是简单的数字排序,还是多字段、嵌套对象、分组排序等高级应用,Array.sort() 都能胜任。同时,通过性能优化技巧(如映射排序)和结合其他数组方法(如 reduce),Array.sort() 可以用来实现高效的数据处理逻辑。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
6月前
|
JavaScript 算法 前端开发
JS数组操作方法全景图,全网最全构建完整知识网络!js数组操作方法全集(实现筛选转换、随机排序洗牌算法、复杂数据处理统计等情景详解,附大量源码和易错点解析)
这些方法提供了对数组的全面操作,包括搜索、遍历、转换和聚合等。通过分为原地操作方法、非原地操作方法和其他方法便于您理解和记忆,并熟悉他们各自的使用方法与使用范围。详细的案例与进阶使用,方便您理解数组操作的底层原理。链式调用的几个案例,让您玩转数组操作。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
7月前
|
监控 网络协议 算法
基于问题“如何监控局域网内的电脑”——Node.js 的 ARP 扫描算法实现局域网内计算机监控的技术探究
在网络管理与安全领域,监控局域网内计算机至关重要。本文探讨基于Node.js的ARP扫描算法,通过获取IP和MAC地址实现有效监控。使用`arp`库安装(`npm install arp`)并编写代码,可定期扫描并对比设备列表,判断设备上线和下线状态。此技术适用于企业网络管理和家庭网络安全防护,未来有望进一步提升效率与准确性。
237 8

热门文章

最新文章