编程进阶网 编程进阶网
首页
  • 在线工具
  • JSON工具
  • 文本工具
  • 图片处理
  • 文档转化
  • 代码压缩
  • 加解密
  • 时间日期
  • 网络工具
  • 颜色设计
  • 二维码
  • 开发实用
  • 计算机组成原理
  • 操作系统原理
  • 网络协议原理
  • 数据库系统原理
  • 序卷导读
  • 数据本质
  • 运行模型
  • 并发设计
  • 内存真相
  • 交互系统
  • 面向对象
  • 设计原则
  • 设计模式
  • 系统架构
  • 体系建设
  • 代码品质
  • 方案设计
  • 稳定可靠
  • 工程运维
  • 性能优化
  • 数据结构导论
  • 线性结构详解
  • 树哈希结构论
  • 容器设计实战
  • 经典算法思想
  • 工程案例剖析
  • 算法题库精练
  • C语言入门
  • C综合案例
  • C专栏博客
  • C标准集库
  • C++入门教程
  • C++综合案例
  • C++专栏博客
  • C++编程技巧
  • Java入门教程
  • Java综合案例
  • Java专栏博客
  • Go入门教程
  • Go综合案例
  • Go专栏博客
  • Go开发技巧
  • JavaScript入门
  • JavaScript案例
  • JavaScript高级
  • Android库解读
  • Android专栏
  • iOS ObjC入门
  • iOS Swift入门
  • iOS入门精通
  • Web之Html手册
  • Web之TypeScript
  • Web之Vue高级进阶
  • Linux之QML入门
  • Linux之QT核心库
  • Python教程
  • Shell&Bash教程
  • 工具脚本
  • 自动化脚本
  • 质量保障
  • 产品思考
  • 软实力
  • 开发流程
  • Git应用
  • 技术模版
  • 技术规范
  • Markdown
  • Mermaid
  • 开源协议
  • 毛选解读
  • 自我精进
  • 关于我
  • 自我精进
  • 职场管理
  • 职场面试
  • 心情杂货
  • 友情链接

杨充

专注编程 · 终身学习者
首页
  • 在线工具
  • JSON工具
  • 文本工具
  • 图片处理
  • 文档转化
  • 代码压缩
  • 加解密
  • 时间日期
  • 网络工具
  • 颜色设计
  • 二维码
  • 开发实用
  • 计算机组成原理
  • 操作系统原理
  • 网络协议原理
  • 数据库系统原理
  • 序卷导读
  • 数据本质
  • 运行模型
  • 并发设计
  • 内存真相
  • 交互系统
  • 面向对象
  • 设计原则
  • 设计模式
  • 系统架构
  • 体系建设
  • 代码品质
  • 方案设计
  • 稳定可靠
  • 工程运维
  • 性能优化
  • 数据结构导论
  • 线性结构详解
  • 树哈希结构论
  • 容器设计实战
  • 经典算法思想
  • 工程案例剖析
  • 算法题库精练
  • C语言入门
  • C综合案例
  • C专栏博客
  • C标准集库
  • C++入门教程
  • C++综合案例
  • C++专栏博客
  • C++编程技巧
  • Java入门教程
  • Java综合案例
  • Java专栏博客
  • Go入门教程
  • Go综合案例
  • Go专栏博客
  • Go开发技巧
  • JavaScript入门
  • JavaScript案例
  • JavaScript高级
  • Android库解读
  • Android专栏
  • iOS ObjC入门
  • iOS Swift入门
  • iOS入门精通
  • Web之Html手册
  • Web之TypeScript
  • Web之Vue高级进阶
  • Linux之QML入门
  • Linux之QT核心库
  • Python教程
  • Shell&Bash教程
  • 工具脚本
  • 自动化脚本
  • 质量保障
  • 产品思考
  • 软实力
  • 开发流程
  • Git应用
  • 技术模版
  • 技术规范
  • Markdown
  • Mermaid
  • 开源协议
  • 毛选解读
  • 自我精进
  • 关于我
  • 自我精进
  • 职场管理
  • 职场面试
  • 心情杂货
  • 友情链接
  • ScriptHub 脚本工具箱
  • Python

  • Shell-Bash

  • 工具脚本

    • 工具脚本速查
    • 哈希校验
    • Base64编码
      • 一、Python Base64 编码/解码
        • 1.1 字符串 ↔ Base64
        • 1.2 文件 ↔ Base64
        • 1.3 URL 安全 Base64(urlsafe_b64encode)
        • 1.4 实战:图片内嵌 HTML
      • 二、Shell Base64
      • 三、实战:配置文件敏感字段 Base64 处理
    • AES加解密
    • RSA签名验签
    • JWT令牌
    • JSON与YAML
    • XML与CSV
    • 编码转义
    • 图片转换
    • 文档转换
    • 批量重命名
    • 分割合并
    • 目录同步
    • 文件监控
    • 压缩归档
    • 文件去重
    • cURL速查
    • HTTP调试
    • 端口DNS
    • 抓包代理
  • 自动化脚本

  • ScriptHub
  • 工具脚本
杨充
2020-05-18
目录

Base64编码

# Base64编码

把二进制数据转成纯文本——URL 安全传输、图片内嵌 HTML、JWT Header、配置文件编码。

# 一、Python Base64 编码/解码

# 1.1 字符串 ↔ Base64

#!/usr/bin/env python3
"""字符串与 Base64 互转"""
import base64

# ---- 编码:字符串 → Base64 ----
text = "Hello, 你好世界"
text_bytes = text.encode('utf-8')
encoded = base64.b64encode(text_bytes).decode()
print(f"Base64: {encoded}")   # SGVsbG8sIOS9oOWlveS4lueVjA==

# ---- 解码:Base64 → 字符串 ----
decoded_bytes = base64.b64decode(encoded)
decoded = decoded_bytes.decode('utf-8')
print(f"原始: {decoded}")      # Hello, 你好世界

# 1.2 文件 ↔ Base64

#!/usr/bin/env python3
"""文件与 Base64 互转——图片/PDF 等二进制文件"""
import base64

def file_to_base64(filepath):
    """文件编码为 Base64 字符串"""
    with open(filepath, 'rb') as f:
        return base64.b64encode(f.read()).decode()

def base64_to_file(b64_str, filepath):
    """Base64 字符串解码为文件"""
    with open(filepath, 'wb') as f:
        f.write(base64.b64decode(b64_str))

# ---- 示例 ----
# b64 = file_to_base64("photo.jpg")
# base64_to_file(b64, "photo_copy.jpg")

# 1.3 URL 安全 Base64(urlsafe_b64encode)

标准 Base64 含 + / = 在 URL 中是特殊字符。URL 安全版把它们换成 - _ 并去掉 =:

#!/usr/bin/env python3
import base64

data = b'\xfb\xff\x00\x12\x34'

standard = base64.b64encode(data)          # b'+/8AEjQ='
urlsafe  = base64.urlsafe_b64encode(data)  # b'-_8AEjQ'  ← 无 +/=,URL 安全

print(f"标准:  {standard.decode()}")
print(f"URL安全: {urlsafe.decode()}")

# 解码——urlsafe 和标准都可以用 b64decode
print(base64.b64decode(urlsafe))  # OK

# 1.4 实战:图片内嵌 HTML

#!/usr/bin/env python3
"""将图片嵌入 HTML 的 data:image 格式"""
import base64, sys, os

def image_to_data_uri(filepath):
    """图片 → data:image/png;base64,..."""
    ext = os.path.splitext(filepath)[1].lower()
    mime_map = {'.png': 'png', '.jpg': 'jpeg', '.gif': 'gif', '.svg': 'svg+xml'}
    mime = mime_map.get(ext, 'png')

    with open(filepath, 'rb') as f:
        b64 = base64.b64encode(f.read()).decode()

    return f'data:image/{mime};base64,{b64}'

# ---- 生成 HTML ----
if __name__ == '__main__':
    uri = image_to_data_uri(sys.argv[1])
    print(f'<img src="{uri}" />')
    # 复制这行到 HTML 即可直接显示图片——无需外部文件

# 二、Shell Base64

#!/bin/bash

# ===== 字符串编码/解码 =====
echo -n "hello" | base64                      # aGVsbG8=
echo "aGVsbG8=" | base64 -d                   # hello

# ===== 文件编码/解码 =====
base64 photo.jpg > photo.txt                  # 文件编码
base64 -d photo.txt > photo_copy.jpg          # 文件解码

# macOS 注意:-d 用 -D 替代
# echo "aGVsbG8=" | base64 -D

# 三、实战:配置文件敏感字段 Base64 处理

#!/usr/bin/env python3
"""配置文件中的敏感字段可逆编码——不是加密,只是避免明文泄露"""
import base64, json

# 原始数据
config = {
    "db_host": "192.168.1.100",
    "db_password": "SuperSecret123"
}

# ---- 编码后写入 ----
encoded_config = {
    k: base64.b64encode(v.encode()).decode()
    for k, v in config.items()
}
with open('config.json', 'w') as f:
    json.dump(encoded_config, f, indent=2)
print("已写入 config.json(Base64 编码)")

# ---- 读取时解码 ----
with open('config.json') as f:
    loaded = json.load(f)
decoded_config = {
    k: base64.b64decode(v).decode()
    for k, v in loaded.items()
}
print(f"解码后: {decoded_config}")

⚠️ 提醒:Base64 是编码不是加密——任何人都能解码。生产环境请用 AES/RSA 或 Vault。

#工具#加密
上次更新: 2026/06/28, 17:55:19
哈希校验
AES加解密

← 哈希校验 AES加解密→

最近更新
01
科学方法实践论法
06-28
02
辩证思维矛盾论法
06-28
03
毛选中的调查观念
06-28
更多文章>
Theme by Vdoing | Copyright © 2019-2026 杨充 | MIT License | 鄂ICP备2024073355号-1 | 鄂ICP备2024073355号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式