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

常见编码小结

常见编码小结

以下是关于 Base64、Base32、Base16、uuencode、xxencode、URL编码、jjencode、aaencode 的详细介绍:


1. Base64

  • 定义:Base64 是一种基于64个可打印字符(A-Za-z0-9+/,填充符=)的二进制到文本编码方案,用于将二进制数据(如图片、文件)转换为ASCII文本格式,便于文本协议传输(如电子邮件、JSON)。
  • 特点
    • 数据膨胀:编码后大小增加约33%(每3字节转为4字符)。
    • 非加密:仅编码而非加密,可轻松解码[5]。
    • 填充规则:末尾用=补足4的倍数长度[3]。
  • 应用场景:MIME邮件、URL简单编码、JWT令牌。

2. Base32

  • 定义:使用32个字符(A-Z2-7)编码二进制数据,每5比特一组转换为一个字符,不足40比特时用=填充。
  • 特点
    • 兼容性优于Base64:排除易混淆字符(如0O),适合不区分大小写的场景。
    • 效率较低:比Base64多占用约20%空间。
  • 应用场景:DNS记录、TOTP动态密码。

3. Base16(十六进制)

  • 定义:即十六进制编码,使用0-9A-F表示4比特一组的数据,每字节对应两个字符。
  • 特点
    • 双倍体积:编码后数据量为原2倍,但无填充符。
    • 人类可读:广泛用于调试、校验和(如MD5哈希)。

4. uuencode

  • 定义:早期Unix邮件系统的二进制转文本编码,将3字节转为4个可打印字符(6比特/字符),包含文件权限等元信息[16][17][19]。
  • 特点
    • 效率低于Base64:字符集包含特殊符号,兼容性较差。
    • 历史用途:跨系统文件传输(如FTP未普及时代)。

5. xxencode

  • 定义:类似uuencode和Base64,但使用更友好的字符集(+-0-9A-Za-z),同样3字节转4字符。
  • 特点
    • 改进uuencode:避免特殊符号导致的传输问题,但使用较少。

6. URL编码(百分号编码)

  • 定义:将URL中的非法字符(如空格、中文)转为%后跟十六进制值(如%20)。
  • 特点
    • 保留字符:字母、数字及-_.!*'()等无需编码,其余均需转换。
    • 多重编码:支持处理双重转义(如%25代表%)。

7. jjencode

  • 定义:JavaScript代码混淆工具,将代码转换为仅含$_等符号的字符串,保持可执行性。
  • 特点
    • 弱加密:算法固定易破解,需结合其他加密手段。
    • 代码膨胀:体积显著增加,影响性能。

8. aaencode

  • 定义:将JavaScript代码转换为颜文字(如日文字符)的混淆方法,依赖JS类型强制转换执行。
  • 特点
    • 趣味性强:代码外观“可爱”,但安全性低。
    • CTF常见:用于逆向工程挑战。

对比总结

编码类型字符集典型用途数据膨胀率安全性
Base64A-Za-z0-9+/=邮件、API数据~33%
Base32A-Z2-7DNS、TOTP~20%
Base160-9A-F哈希值、调试100%
uuencodeASCII可打印(含特殊符号)历史文件传输~33%极低
xxencode+-0-9A-Za-z替代uuencode~33%极低
URL编码%+十六进制URL参数转义可变
jjencode$_等符号JS代码混淆弱(可逆)
aaencode颜文字(如(゚∀゚)JS娱乐混淆、CTF弱(可逆)

如需进一步探讨具体编码的实现细节或应用案例,可参考上述引用来源!

http://www.xdnf.cn/news/9261.html

相关文章:

  • 常见JDK安装配置
  • springboot 笔记
  • Redis核心数据结构操作指南:字符串、哈希、列表详解
  • 【K8S】K8S基础概念
  • Java spingboot项目 在docker运行,需要含GDAL的JDK
  • 飞牛fnNAS手机相册备份及AI搜图
  • 博图SCL基础知识-表达式及赋值运算
  • 甲醇 燃料 不也有碳排放吗?【AI回答版】
  • 得物Java开发面试题及参考答案(下)
  • Linux操作系统概述
  • 【Canvas与日月星辰】烈日当空
  • 关于git的使用
  • 【漏洞与预防】Microsoft Windows 文件资源管理器欺骗漏洞预防
  • 【免费】【无需登录/关注】Base64 图片转换工具网页
  • 【Java】DelayQueue
  • LangGraph(七)——Workflows
  • 基于物联网(IoT)的电动汽车(EVs)智能诊断
  • Java组合、聚合与关联:核心区别解析
  • AWS WebRTC:获取信令服务节点和ICE服务节点
  • 深度解读 Qwen3 大语言模型的关键技术
  • 【Elasticsearch】ingest对于update操作起作用吗?
  • Android15 Camera Hal设置logLevel控制日志输出
  • vue2使用el-tree实现两棵树间节点的拖拽复制
  • LeetCode 2894.分类求和并作差:数学O(1)一行解决
  • Java提取markdown中的表格
  • go并发与锁之sync.Mutex入门
  • 国11阶乘约数-质因数分解
  • C/C++的OpenCV的锐化
  • vue 前端请求跨域解决办法
  • 九级融智台阶与五大要素协同的量子化解析