Install
openclaw skills install @thcjp/encoding-formats提供Base64、URL编码、Hex、Unicode、JWT、哈希及多种序列化格式的编码解码与转换工具,支持命令行和代码调用。
openclaw skills install @thcjp/encoding-formats| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| input | string | 是 | 编码格式工具处理的输入数据或指令 |
| options | object | 否 | 附加配置选项,如模式选择、格式偏好等 |
| callback_url | string | 否 | 异步处理完成后的回调通知URL |
| 依赖项 | 类型 | 是否必需 | 获取方式 |
|---|---|---|---|
| LLM API | API | 必需 | 由Agent内置LLM提供 |
如需调用外部API,请参考环境配置章节设置对应密钥
API Key配置方式:
export API_KEY="${API_KEY:?请设置环境变量}"
配置后需重启会话或开启新终端生效。API Key应妥善保管,避免泄露到版本控制系统.
支持标准Base64和URL安全Base64(RFC 4648)变体。Base64使数据增大约33%,适用于在文本格式中嵌入二进制数据.
echo -n "Hello, World!" | base64
# 输出: SGVsbG8sIFdvcmxkIQ==
# ...
echo "SGVsbG8sIFdvcmxkIQ==" | base64 -d
# 输出: Hello, World!
# ...
# URL安全变体
echo -n "Hello" | base64 | tr '+/' '-_' | tr -d '='
```- 验证返回数据的完整性和格式正确性
### 2. URL编码解码
对HTTP请求参数进行编码,处理特殊字符和空格.
```bash
python3 -c "from urllib.parse import quote; print(quote('hello world & foo=bar'))"
# 输出: hello%20world%20%26%20foo%3Dbar
# ...
parse import unquote; print(unquote('hello%20world%20%26%20foo%3Dbar'))"
# 输出: hello world & foo=bar
```- 验证执行结果,确认输出符合预期格式
- 异常时参考错误处理章节进行恢复
- 关键参数: `url编码解码` 选项
- 处理流程: 接收输入 -> 执行URL编码解码 -> 返回结果
- 输入: 用户提供URL编码解码所需的参数和指令
### 3. Hex查看与转换
查看二进制文件的十六进制转储,在Hex和文本之间转换.
```bash
xxd -p file.bin # 纯Hex输出
xxd -l 64 file.bin # 前64字节
echo "48656c6c6f" | xxd -r -p # Hex转文本: Hello
hex查看与转换 选项检查字符的Unicode码点,在不同编码间转换.
iconv -f ISO-8859-1 -t UTF-8 input.txt > output.txt
file -bi document.txt # 检测文件编码
```- 验证执行结果,确认输出符合预期格式
- 异常时参考错误处理章节进行恢复
- 关键参数: `unicode检查与编码转换` 选项
- 处理流程: 接收输入 -> 执行Unicode检查与编码转换 -> 返回结果
- 输入: 用户提供Unicode检查与编码转换所需的参数和指令
### 5. JWT解码
解码JWT令牌的header和payload(JWT是签名而非加密,任何人可解码).
```bash
TOKEN="eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIn0.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"
echo "$TOKEN" | cut -d. -f2 | tr '-_' '+/' | base64 -d 2>/dev/null | jq
# 输出: {"sub": "1234567890", "name": "John Doe"}
jwt解码 选项计算和验证文件哈希,用于完整性检查.
echo -n "Hello" | sha256sum
# 输出: 185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969
# ...
sha256sum *.tar.gz > checksums.sha256
sha256sum -c checksums.sha256 # 验证
哈希与校验和 选项在JSON、YAML、CSV、TOML、MessagePack、CBOR等格式间转换.
python3 -c "import json, yaml, sys; yaml.dump(json.load(sys.stdin), sys.stdout)" < data.json
jq -r '.[] | [.id, .name, .email] | @csv' data.json > data.csv
protoc --decode_raw < data.pb # Protobuf解码
base64 -d image.b64 > image.png
# 将Base64编码的图片数据解码并保存为PNG文件
curl -G --data-urlencode "q=hello world & more" https://api.example.com/search
# 正确编码空格和特殊字符,发送HTTP GET请求
import json, base64, time
# ...
token = "eyJhbGciOiJIUzI1NiJ9.eyJleHAiOjk3NDI0Mjg4MDB9.signature"
payload_b64 = token.split('.')[1]
# 添加padding
padded = payload_b64 + '=' * (4 - len(payload_b64) % 4)
payload = json.loads(base64.urlsafe_b64decode(padded))
is_expired = payload.get('exp', 0) < time.time()
print(f"Expired: {is_expired}")
# 输出: Expired: False
sha256sum file.bin
# 输出: 3a7bd8e1c4f2b9a6e8d5c1f4b7a2e9d6c3f8b1a4e7d2c9f6b3a8e1d5c4f7b2a9 file.bin
# ...
# 输出: file.bin: OK
# "café" 显示为 "café" → 文件是UTF-8但被当作Latin-1读取
file -bi document.txt
# 输出: text/plain; charset=iso-8859-1
iconv -f UTF-8 -t ISO-8859-1 document.txt 2>/dev/null | iconv -f UTF-8 -t UTF-8
# 或重新用正确编码读取
A: Base64使数据增大约33%(每3字节编码为4字符)。适用于在JSON、XML、邮件等文本格式中嵌入二进制数据,不适用于压缩或加密.
A: Base64url(RFC 4648)使用 - 和 _ 替代 + 和 /,并省略padding =。JWT和URL参数使用此变体。转换方法:tr '+/' '-_' 和 tr -d '='.
A: JWT是签名的,不是加密的。任何人都可以解码header和payload。只有签名用于验证真实性。切勿在JWT claims中放置敏感信息.
A: SHA-256是完整性检查的标准。MD5适用于去重和非安全校验和,但在密码学上已被破解,不应用于安全场景.
A: UTF-8 BOM是文件开头的 EF BB BF 三字节。某些解析器会将其误认为内容。移除方法:sed -i '1s/^\xEF\xBB\xBF//' file.txt。检测方法:hexdump -C file.txt | head -1.
A: "é" 可以是单个字符 U+00E9(NFC)或 e + 组合重音 U+0065 U+0301(NFD)。Python中用 unicodedata.normalize('NFC', text) 统一。数据库和搜索通常需要统一归一化形式.
A: 使用 file -bi filename 检测文件编码。对于字符串,尝试UTF-8解码,失败则尝试Latin-1。乱码几乎总是编码假设错误导致.
xxd -p 和 xxd -r -p 是命令行最快的二进制与Hex互转方式encodeURIComponent(JS)或 urllib.parse.quote(Python),不要手动编码protoc --decode_raw,且结果可能不完整sha256sum,macOS用 shasum -a 256{
"success": true,
"data": {
"result": "编码格式工具处理结果",
"execution_time": "0.5s",
"metadata": {
"version": "1.0",
"processor": "encoding-formats"
}
},
"execution_log": [
"解析输入参数",
"执行核心处理",
"格式化输出结果"
],
"error": null
}
| 风险项 | 等级 | 防护措施 | 验证方法 |
|---|---|---|---|
| 密钥泄露 | 高 | 使用环境变量或密钥管理服务存储密钥 | 定期审计密钥存储,确保没有泄露 |
| 数据篡改 | 中 | 对敏感数据进行加密和哈希校验 | 定期进行数据完整性校验,确保数据未被篡改 |
| 注入攻击 | 高 | 对用户输入进行验证和清理 | 使用参数化查询或ORM防止输入验证,对输入进行XSS过滤 |
| 未授权访问 | 高 | 限制API访问权限 | 使用OAuth或JWT进行身份验证和授权,监控API访问日志 |
| 代码执行 | 高 | 限制代码执行权限 | 使用沙箱环境执行代码,限制代码执行权限 |
| 效率提升量化分析 |
|---|
| Base64编码解码 |
| URL编码解码 |
| Hex查看与转换 |
| Unicode检查与编码转换 |
| JWT解码 |
| 差异性对比 |
|---|
| --- |
| 功能覆盖 |
| 支持格式 |
| 性能 |
| 易用性 |
| 安全性 |
| 操作场景 | 手动耗时 | 自动化耗时 | 效率提升 |
|---|---|---|---|
| 文件解析与提取 | 5-10分钟/个 | <5秒/个 | 60-120x |
| 批量文件处理(100个) | 8-16小时 | <5分钟 | 96-192x |
| API调用与响应解析 | 2-3分钟/次 | <1秒/次 | 120-180x |
| 多接口数据聚合 | 15-30分钟 | <10秒 | 90-180x |
| 命令执行与结果收集 | 3-5分钟/次 | <2秒/次 | 90-150x |
| 重复任务批量执行 | 因任务而异 | 线性缩减 | 5-50x |
| 错误排查与修复 | 10-30分钟 | <30秒 | 20-60x |
| 对比维度 | 编码格式工具 | 传统手动方式 | 通用脚本工具 |
|---|---|---|---|
| 自动化程度 | 全流程自动 | 完全手动 | 部分自动 |
| 错误处理 | 内置错误恢复 | 依赖人工经验 | 基本try-catch |
| 可复用性 | 参数化配置 | 一次性脚本 | 模板化 |
| 安全合规 | 内置安全检查 | 无安全保障 | 无安全保障 |
| 适用场景 | 编码解码与数据格式转换 | 通用场景 | 通用场景 |
针对编码格式工具使用中可能遇到的常见问题,提供以下排查方案:
| 错误类型 | 原因分析 | 解决方案 |
|---|---|---|
| API认证失败(401) | API密钥错误或过期 | 检查密钥配置,重新生成token |
| 接口限流(429) | 请求频率超出限制 | 降低调用频率,启用重试退避策略 |
| 响应超时(504) | 网络延迟或服务端负载过高 | 增加超时阈值,检查网络连接 |
| 文件不存在 | 路径错误或文件未创建 | 检查路径拼写,确认文件已生成 |
| 文件格式不支持 | 扩展名不在支持列表中 | 转换为支持的格式后重试 |
| 权限不足 | 当前用户无读写权限 | 检查文件权限,以管理员身份运行 |
| 命令执行失败 | 参数错误或环境依赖缺失 | 检查命令语法,确认依赖已安装 |
| 进程超时 | 命令执行时间过长 | 增加超时设置,优化命令参数 |
| 网络连接失败 | DNS解析失败或防火墙拦截 | 检查网络配置,确认代理设置 |