当前位置: 首页 > news >正文

JS逆向基础( AES 解密密文WordArray和Uint8Array实战②)

1. Uint8Array 就像「快递柜」

  • 每个格子固定放「1 瓶饮料」(1 字节 = 8 位,范围 0-255 就像饮料编号)
  • 比如装了 3 瓶:可乐(编号 255)、雪碧(10)、矿泉水(0)
  • 这是超市通用的标准货架,任何工具(JS 内置功能)都认识这种摆放方式
  • 用途:运输、存储所有二进制东西(图片、文件、网络数据等)

2. WordArray 就像「加密专用礼盒」

  • 是某个品牌(比如 CryptoJS)自己设计的盒子,每个盒子固定装「4 瓶饮料」(4 字节 = 32 位)
  • 比如要加密 "hello",先把它拆成饮料,再装进这种 4 瓶装的礼盒
  • 只有这个品牌的工具(CryptoJS 的加密 / 解密函数)才方便处理这种礼盒
  • 要想让别人(其他 JS 功能)看懂,得先把礼盒拆开,把饮料倒回普通冰柜(转成 Uint8Array 或字符串)

  • 1 字节:能表示的范围很小,比如可以存一个英文字母(如 'a')、一个数字(如 '5'),或者一个简单的符号(如 '!')。
    举例:字母 “a” 在计算机中就用 1 字节存储(二进制是01100001)。

  • 4 字节:是 1 字节的 4 倍(32 个二进制位),能表示更大的范围。
    比如可以存一个中文汉字(大部分中文用 2 字节,但有些编码下可能用 4 字节)、一个较大的整数(比如 123456),或者一段简短的指令。
    举例:整数 “100000” 在计算机中可能用 4 字节存储。

因为 1 字节 = 8 个二进制位,最大能表示的数就是 2⁸ - 1 = 255(二进制是 11111111),最小是 0(二进制 00000000)。

把一串被压缩过的二进制数据(Uint8Array)还原成原来的字符串

举个生活例子:
就像把一件羽绒服压缩成小方块(节省空间),现在需要解开压缩,让它变回原来蓬松的样子。这里的 “小方块” 就是 Uint8Array(压缩后的二进制数据),“蓬松的羽绒服” 就是最终的字符串。

关键步骤:

  1. 压缩:原始字符串 → 变成二进制数据(Uint8Array),体积变小(比如 “abcdef” 压缩后可能只有几个字节)。
  2. 解压缩:压缩后的 Uint8Array → 还原成原来的二进制数据(还是 Uint8Array,但体积变大)。
  3. 转字符串:用 TextDecoder 把二进制数据翻译成人类能看懂的文字。

为什么要这么做?
因为字符串直接传输 / 存储体积大,压缩后能节省空间和流量,就像邮件附件会先压缩再发送一样。

AES 算法就像一台「特殊的榨汁机」,它的进料口和出料口只认「特定规格的水果盒」(WordArray),而不认散装水果(字符串)或其他盒子(如 Uint8Array)。不是不能用其他格式,而是加密库为了方便用户,自动帮你做了格式转换,让你不用关心底层细节。

不是 AES 算法只能输出 WordArray,而是 加密库为了适配 AES 的底层计算逻辑,选择用 WordArray 作为中间格式,让整个加密流程更顺畅。就像你用洗衣机时,衣服要放进「洗衣机专用洗衣袋」(WordArray),而不是直接扔进去 —— 不是洗衣机不能洗散装衣服,而是专用袋子能让洗涤更高效、更安全。

整个流程是:

  1. 使用 AES 解密密文,得到 WordArray 对象。

  2. 将 WordArray 转换为 Uint8Array。

  3. 解压缩 Uint8Array 数据,得到字符串。

  4. 将字符串解析为 JSON 对象。

  5. 如果过程中发生错误,捕获并处理异常。

开始实战

抖音商品销量排行榜_抖音高佣爆款商品销量排行榜 - 蝉妈妈数据

然后查看响应

然后搜素is_encrypt

然后鼠标移动到ZP  点击

[[FunctionLocation]]:app.eefc8413.js:1 进行一个跳转

跳转到这里

然后向下翻到这里

看到了这个

http://www.lryc.cn/news/597467.html

相关文章:

  • iOS开发 Swift 速记5:高级运算符
  • 事务隔离级别和传播方式
  • 软件开发生命周期与模型解析:选择合适的开发方法
  • 什么是ARQ协议
  • 如何最简单、通俗地理解Python的numpy库?
  • C语言习题讲解-第五讲-循环编程练习等
  • Excel——设置打印的区域
  • CSS3文本阴影特效全攻略
  • 运营端账号管理设计指南:安全与效率的双重保障
  • 牛油果褐变的成因与食用安全
  • ElasticSearch基础数据管理详解
  • 同一个端口无法同时配置基于 server_name 的 HTTP(非加密)和 HTTPS(加密)
  • 数据科学与大数据技术和统计学有什么区别?​
  • [IMX][UBoot] 17.Linux 根文件系统
  • Elasticsearch Circuit Breaker 全面解析与最佳实践
  • MCU驱动AD5231BRUZ_10K
  • 【Elasticsearch】跨集群检索(Cross-Cluster Search)
  • 83、设置有人DTU设备USR-M100采集传感器数据,然后上传阿里云服务
  • now能减少mysql的压力吗
  • 旅游管理虚拟仿真实训室:重构实践教学新生态
  • 【数据库】国产数据库的新机遇:电科金仓以融合技术同步全球竞争
  • 云蝠智能 Voice Agent:重构企业语音交互,引领 AI 服务新范式
  • QGraphicsScene导出为PDF
  • SQL Server 数据类型的含义、特点及常见使用场景的详细说明
  • 【轨物洞见】光伏逆变器数据:分布式电站价值回归的“第一块多米诺骨牌”
  • Pycharm2025 安装教程 免费分享 没任何套路
  • PyCharm高效进阶指南:掌握专业开发技巧与最佳实践
  • Spring DeferredResult 实现长轮询
  • [HarmonyOS] HarmonyOS LiteOS-A 设备开发全流程指南
  • 清华大学层次化空间记忆助力具身导航!Mem4Nav:基于层次化空间认知长短期记忆系统的城市环境视觉语言导航