news 2026/6/13 13:36:52

ASCII、Unicode、UTF-8、Base64 全详解(抓包 / 解密实战向)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ASCII、Unicode、UTF-8、Base64 全详解(抓包 / 解密实战向)

目录

一、ASCII 码(基础字符集)

1. 定义

2. 编码规则

3. 特点 & 抓包场景

示例

二、Unicode(统一字符集 / 字符编号)

1. 定义

2. 核心概念:码点(Code Point)

3. 范围

4. 关键误区(抓包必懂)

三、UTF-8(互联网主流编码,抓包 90% 都是它)

1. 定义

2. 核心特点

3. 编码规则(重点,解密 / 字节分析必备)

4. 实操示例(中文转 UTF-8 字节)

5. 抓包 & 开发场景

四、Base64(抓包 / 解密 / 逆向高频编码)

1. 定义

2. 核心原理

规则

字节对应关系

3. 补位规则(抓包看末尾 = 必懂)

4. 标准码表(64 个字符)

5. 关键区分:编码 ≠ 加密

6. 实战场景(抓包 / 解密)

7. 极简代码示例(常用语言)

Python

JavaScript(前端抓包调试)

五、四大编码横向对比(抓包快速区分)

六、抓包排错 & 解密经验总结


结合原理、编码规则、区别、抓包场景用法、加解密实操讲解,适合网络抓包、接口分析、字符串逆向解密使用。

一、ASCII 码(基础字符集)

1. 定义

American Standard Code for Information Interchange,美国信息交换标准代码,最早的单字节字符编码

  • 仅表示英文字母、数字、英文符号、控制字符不支持中文、日文等非英文字符

2. 编码规则

  • 占用:1 字节(8 bit),实际只用低 7 位,最高位固定为0
  • 取值范围:0 ~ 127(十进制),共 128 个字符
    • 0~31、127:控制字符(回车、换行、退格、响铃等,抓包里常看到\r \n
    • 32:空格
    • 48~57:数字0-9
    • 65~90:大写字母A-Z
    • 97~122:小写字母a-z
    • 其余:英文标点、符号

3. 特点 & 抓包场景

  1. 纯英文接口、老式协议、串口通信、HTTP 基础头域默认使用 ASCII
  2. 缺陷:字节上限 127,完全无法表示中文,中文会直接乱码。
  3. 抓包现象:纯英文请求 / 响应原始字节和 ASCII 一一对应。

示例

字符A→ 十进制65→ 二进制01000001字符0→ 十进制48


二、Unicode(统一字符集 / 字符编号)

1. 定义

ASCII 只能表示英文,全球语言无法统一,因此诞生Unicode(万国码)核心定位:给全世界所有字符分配唯一「数字编号(码点)」,不是具体存储编码。 简单理解:

Unicode =字符字典(每个字符对应一个唯一 ID) UTF-8/UTF-16/UTF-32 =把 ID 转成二进制字节的存储方案

2. 核心概念:码点(Code Point)

每个字符对应一个十六进制码点,格式:U+xxxx

  • 例:
    • 英文字母AU+0041
    • 中文U+4E2D
    • 中文U+56FD

3. 范围

目前 Unicode 覆盖十几万字符:汉字、日文、韩文、表情、特殊符号、古文字等。

4. 关键误区(抓包必懂)

Unicode ≠ UTF-8

  • Unicode:只是字符的编号,不规定怎么存成字节。
  • UTF-8/UTF-16:是 Unicode 的实现 / 存储编码

三、UTF-8(互联网主流编码,抓包 90% 都是它)

1. 定义

UTF-8 = Unicode Transformation Format - 8bit目前互联网、HTTP 接口、网页、APP 抓包、JSON、日志默认编码,兼容性最强。

2. 核心特点

  • 变长编码:1~4 个字节动态存储,按需分配长度
  • 完全兼容 ASCII:ASCII 字符在 UTF-8 中仍占 1 字节,老式系统无缝兼容
  • 无字节序问题(不需要 BOM 头),网络传输首选

3. 编码规则(重点,解密 / 字节分析必备)

UTF-8 通过高位标识区分当前字符占用几个字节,规则固定:

  1. 1 字节字符(ASCII 区)二进制开头:0xxxxxxx范围:U+0000 ~ U+007F(所有英文、数字、符号) 👉 和 ASCII 完全一致

  2. 2 字节字符(常用拉丁文、少量符号)首字节:110xxxxx后续字节:10xxxxxx

  3. 3 字节字符(绝大多数中文、日文、韩文、全角符号)首字节:1110xxxx后续字节:10xxxxxx中文全部落在 3 字节区间,抓包看到中文一定是 3 字节一组。

  4. 4 字节字符(emoji、生僻古汉字、特殊符号)首字节:11110xxx后续字节:10xxxxxx

4. 实操示例(中文转 UTF-8 字节)

字符:

  1. Unicode 码点:U+4E2D
  2. 转为二进制:0100 1110 0010 1101
  3. 套 3 字节 UTF-8 模板1110xxxx 10xxxxxx 10xxxxxx
  4. 填充后得到 3 个字节,抓包里看到的原始字节就是它。

5. 抓包 & 开发场景

  1. HTTP 响应头常见:Content-Type: text/html; charset=utf-8
  2. JSON、POST 表单、接口参数、URL 编码底层都是 UTF-8
  3. 中文乱码 99% 原因:编码不匹配(服务端 GBK,客户端 UTF-8)
  4. URL 编码(% XX 形式):基于 UTF-8 字节再做百分号编码

四、Base64(抓包 / 解密 / 逆向高频编码)

1. 定义

Base64 是二进制 → 可打印文本的编码方式,不是加密算法(可逆、无密钥)。 作用:把二进制数据、特殊字节、不可见字符转成纯字母、数字、+/,方便在 HTTP、参数、JSON、Cookie 中传输。

抓包常见场景:密码、图片二进制、Token、加密后的密文、文件流、接口暗文大量使用 Base64。

2. 核心原理

规则
  1. 把原始数据每 3 个字节(24 bit)划为一组
  2. 24 bit 重新拆分为4 个 6 bit小段
  3. 每个 6 bit 对应 Base64 标准码表中的 1 个可打印字符
  4. 不足 3 字节时,末尾用=补位(填充符)
字节对应关系
  • 原始:3 字节 = 24 bit
  • 编码后:4 字符
  • 体积变化:Base64 编码后体积比原数据大 1/3(网络传输会增重)

3. 补位规则(抓包看末尾=必懂)

Base64 末尾的=填充符,只出现在数据长度不能被 3 整除时:

  1. 剩余1 字节:补2 个=
  2. 剩余2 字节:补1 个=
  3. 刚好 3 的倍数:=

例:

  • YWJj→ 无等号,原始 3 字节
  • YWE=→ 1 个等号,原始 2 字节
  • YQ==→ 2 个等号,原始 1 字节

4. 标准码表(64 个字符)

A-Za-z0-9+/,共 64 个字符。

变种:URL Safe Base64(接口 / URL 常用) 把+-/_去掉末尾=,避免 URL 转义冲突。

5. 关键区分:编码 ≠ 加密

  • Base64公开码表、完全可逆,任何人都能解码
  • 逆向 / 抓包中:看到 Base64 不等于加密,只是格式转换
  • 常见套路:先 AES/DES 加密 → 再 Base64 输出(这才是真正加密)

6. 实战场景(抓包 / 解密)

  1. Cookie、Token、Authorization 头大量 Base64
  2. 接口参数、隐藏密文、上传图片二进制转文本
  3. 逆向分析:拿到密文先判断是否 Base64(字符集只有字母数字+/_=
  4. 工具:Burp、Fiddler、在线解码、Python/JS 原生函数均可一键解编

7. 极简代码示例(常用语言)

Python
import base64 # 编码 字符串 → Base64 s = "测试123" b64_enc = base64.b64encode(s.encode("utf-8")).decode() # 解码 Base64 → 字符串 b64_dec = base64.b64decode(b64_enc).decode("utf-8")
JavaScript(前端抓包调试)
// 编码 let enc = btoa(unescape(encodeURIComponent("测试123"))); // 解码 let dec = decodeURIComponent(escape(atob(enc)));

五、四大编码横向对比(抓包快速区分)

编码本质字节长度支持中文网络用途
ASCII英文字符集1 字节❌ 不支持老式协议、HTTP 基础头
Unicode全局字符编号(码点)无固定✅ 支持底层字符定义,不直接传输
UTF-8Unicode 变长存储编码1~4 字节✅ 支持全网主流、接口、网页、JSON
Base64二进制转文本编码膨胀 1/3间接支持二进制传输、参数、Token、密文

六、抓包排错 & 解密经验总结

  1. 看到中文乱码优先检查:是否 UTF-8、GBK、GB2312 编码不匹配。
  2. 接口参数是一堆字母数字 + +/99% 是Base64,直接解码看原始内容。
  3. URL 里 % xx% xx% xxURL 编码,底层基于 UTF-8 字节生成。
  4. 区分 Unicode / UTF-8抓包原始字节不会直接出现 Unicode 码点,网络传输一律用 UTF-8。
  5. Base64 带 - _ 无等号属于URL 安全版 Base64,解码前先还原_-再解码。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/13 13:36:10

MuleSoft+LLM企业级AI编排:跨越语义鸿沟的可信工作流

1. 项目概述:当企业级集成平台遇上大语言模型,不是叠加,而是重定义工作流“AI Orchestration in Action: How MuleSoft and LLMs Fuel the Future of Enterprise AI”——这个标题里藏着一个正在发生的、静默却剧烈的范式转移。它说的不是“用…

作者头像 李华
网站建设 2026/6/13 13:35:55

嵌入式ADC模块寄存器配置全解析:从核心原理到低功耗实践

1. ADC模块核心设计思路与寄存器全景解析模数转换器,也就是我们常说的ADC,在嵌入式系统里扮演着“翻译官”的角色,它负责把传感器传来的、连续变化的电压信号(比如温度、压力、光照强度),翻译成MCU能理解和…

作者头像 李华
网站建设 2026/6/13 13:35:54

MC9S08SU16引脚复用与端口控制:嵌入式硬件稳定性的关键

1. 项目概述与核心价值在嵌入式硬件开发中,尤其是面对引脚资源紧张的微控制器(MCU)时,如何高效、稳定地管理和使用每一个物理引脚,是决定项目成败的关键细节之一。NXP的MC9S08SU16,这颗在电机控制、电源转换…

作者头像 李华
网站建设 2026/6/13 13:33:35

如何用DyberPet在桌面上创建你的专属虚拟伙伴:完整指南

如何用DyberPet在桌面上创建你的专属虚拟伙伴:完整指南 【免费下载链接】DyberPet Desktop Cyber Pet Framework based on PySide6 项目地址: https://gitcode.com/GitHub_Trending/dy/DyberPet 你是否厌倦了单调的电脑桌面?想让喜欢的角色常驻桌…

作者头像 李华
网站建设 2026/6/13 13:32:52

深入解析MC68030协处理器接口:硬件扩展与协议驱动设计

1. 项目概述与核心价值在嵌入式系统和早期高性能计算领域,处理器性能的提升往往受限于其通用架构。为了应对浮点运算、图形处理或信号处理等特定密集型任务,一种经典的解决方案是引入协处理器。它并非一个独立的计算单元,而是作为主处理器的“…

作者头像 李华
网站建设 2026/6/13 13:31:38

专业级GTA5安全增强菜单:YimMenu完整防护与功能优化指南

专业级GTA5安全增强菜单:YimMenu完整防护与功能优化指南 【免费下载链接】YimMenu YimMenu, a GTA V menu protecting against a wide ranges of the public crashes and improving the overall experience. 项目地址: https://gitcode.com/GitHub_Trending/yi/Yi…

作者头像 李华