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

Unicode全字符集加解密工具 - 命令行交互版:功能完整的终端解决方案

Unicode全字符集加解密工具 - 命令行交互版:功能完整的终端解决方案

🎯 项目简介

Unicode全字符集加解密工具命令行版是基于同名GUI工具开发的终端交互版本,提供了与GUI版本完全相同的功能体验,专为喜欢命令行操作、需要自动化脚本集成或在服务器环境中使用的用户设计。

项目关联: 本工具是 Unicode全字符集加解密工具GUI版本的完美补充,两者功能完全对应,满足不同使用场景需求。

✨ 与GUI版本功能对比

功能模块GUI版本命令行版本实现方式
文本编码图形按钮操作数字菜单选择选项1 + 编码方法选择
文本解码图形按钮操作数字菜单选择选项2 + 解码方法选择
文件加密文件对话框路径输入选项3 + 交互式配置
文件解密文件对话框路径输入选项4 + 交互式配置
字符分析实时显示面板详细字符报告选项5 + 多行输入
方法列表单选按钮组数字菜单展示选项6 直接显示

🚀 核心特色

⌨️ 纯键盘交互体验

# 启动程序后交互示例
🔐🔐🔐🔐🔐🔐🔐🔐🔐🔐🔐🔐🔐🔐🔐🔐🔐🔐🔐🔐🔐🔐🔐🔐🔐Unicode全字符集加解密工具
🔐🔐🔐🔐🔐🔐🔐🔐🔐🔐🔐🔐🔐🔐🔐🔐🔐🔐🔐🔐🔐🔐🔐🔐🔐
请选择操作 (1-7): 1

📝 多行文本完美支持

与GUI版本相同的多行文本处理能力:

  • ✅ 支持换行符、回车符
  • ✅ 段落文本输入
  • ✅ 特殊字符转义
  • ✅ 完整Unicode字符集

多行输入示例

📝 请输入要编码的文本:
💡 提示: 输入完内容后,在新的一行输入 'END' 并回车结束输入
──────────────────────────────────────────────────
第一行文本
第二行文本
包含换行符的
多行内容
END

🔄 完整的编码方法支持

与GUI版本相同的7种编码格式:

  1. Unicode转义 (\uXXXX)
  2. Unicode大写 (\UXXXXXXXX)
  3. HTML实体 (&#xXXXX;)
  4. Python转义
  5. URL编码
  6. Base64编码
  7. 全字符转义

🛠️ 技术优势

跨平台兼容性

# 基于纯Python标准库
import tkinter  # GUI版本
# VS
import sys      # 命令行版本 - 无额外依赖

自动化友好

# 可集成到Shell脚本中
#!/bin/bash
echo "处理文本..." | python3 unicode_cli.py

资源占用极低

  • 无图形界面开销
  • 内存占用更少
  • 启动速度更快

💡 应用场景

🖥️ 服务器环境

# 远程SSH会话中使用
ssh user@server "python3 unicode_cli.py"

🔧 开发调试

# 快速测试编码效果
python3 unicode_cli.py
# 选择1 → 选择1 → 输入测试文本

📚 教育教学

# 学习Unicode编码原理
# 通过交互方式理解字符编码

🎮 完整使用指南

快速开始

# 1. 运行命令行版本
python3 unicode_cli.py# 2. 按照数字提示操作

代码见文末

详细操作流程

文本编码示例
主菜单 → 1 (文本编码)
→ 1 (Unicode转义)  
→ 输入多行文本
→ 输入END结束
→ 查看编码结果
→ 可选查看字符信息
文件处理示例
主菜单 → 3 (文件加密)
→ 1 (Base64编码)
→ 输入源文件路径
→ 输入目标文件路径
→ 自动完成加密

实战案例

处理营销文案

输入:

noot——noot——我是ping u,
我被molly tea封印整整三天了。
现在只有新品能救我!

操作: 1 → 1 → 输入文本 → END

输出:

\u006e\u006f\u006f\u0074\u2014\u2014\u006e\u006f\u006f\u0074\u2014\u2014\u6211\u662fping u\uff0c\n\u6211\u88abmolly tea\u5c01\u5370\u6574\u6574\u4e09\u5929\u4e86\u3002\n\u73b0\u5728\u53ea\u6709\u65b0\u54c1\u80fd\u6551\u6211\uff01

🔧 高级功能

字符信息分析

位置   0: 'n' -> U+006E (十进制:   110)
位置   1: 'o' -> U+006F (十进制:   111)
位置   2: 'o' -> U+006F (十进制:   111)
位置   3: 't' -> U+0074 (十进制:   116)
位置   4: '—' -> U+2014 (十进制:  8212)
位置  15: '↵' -> U+000A (十进制:    10)  # 换行符显示

批量文件处理

结合Shell脚本实现批量操作:

#!/bin/bash
for file in *.txt; doecho "处理文件: $file"python3 unicode_cli.py <<EOF
3
1
$file
encoded_$file
EOF
done

🌟 版本特色

与GUI版本协同工作

  • ✅ 相同的编码算法
  • ✅ 一致的处理结果
  • ✅ 可互相验证
  • ✅ 数据格式兼容

终端优化特性

  • ✅ 支持Ctrl+C中断
  • ✅ 友好的错误提示
  • ✅ 进度状态显示
  • ✅ 结果格式化输出

📊 性能表现

指标GUI版本命令行版本
启动时间1-2秒0.1-0.3秒
内存占用50-100MB10-20MB
大文件处理图形进度显示纯文本进度

🤝 使用建议

选择指南

  • GUI版本: 日常使用、可视化操作、初学者友好
  • 命令行版本: 自动化脚本、服务器环境、高级用户

组合使用

两个版本可以配合使用,在图形环境和命令行环境间无缝切换。


让文本处理在终端中同样强大!

代码

#!/usr/bin/env python3
"""
Unicode全字符集加解密工具 - 交互式命令行版本
支持多行文本和换行符输入
"""import re
import urllib.parse
import base64
from pathlib import Pathclass UnicodeCryptoCLI:def __init__(self):self.encoding_methods = {'1': ('Unicode转义(\\uXXXX)', self._to_unicode_escape),'2': ('Unicode大写(\\UXXXXXXXX)', self._to_unicode_escape_upper),'3': ('HTML实体(&#xXXXX;)', self._to_html_entity),'4': ('Python转义', self._to_python_escape),'5': ('URL编码', self._to_url_encode),'6': ('Base64编码', self._to_base64),'7': ('全字符转义', self._to_all_escape)}self.decoding_methods = {'1': ('Unicode转义解码', self._from_unicode_escape),'2': ('Unicode大写解码', self._from_unicode_escape_upper),'3': ('HTML实体解码', self._from_html_entity),'4': ('Python转义解码', self._from_python_escape),'5': ('URL编码解码', self._from_url_encode),'6': ('Base64解码', self._from_base64),'7': ('全字符转义解码', self._from_all_escape)}def _to_unicode_escape(self, text, uppercase=False):"""转换为Unicode转义序列"""result = []for char in text:code_point = ord(char)if code_point > 127 or char in '\\':if uppercase:result.append(f'\\U{code_point:08X}')else:result.append(f'\\u{code_point:04x}')else:result.append(char)return ''.join(result)def _to_unicode_escape_upper(self, text):"""转换为大写Unicode转义序列"""return self._to_unicode_escape(text, True)def _from_unicode_escape(self, text):"""从Unicode转义序列解码"""# 处理 \uXXXXtext = re.sub(r'\\u([0-9a-fA-F]{4})', lambda m: chr(int(m.group(1), 16)), text)# 处理 \UXXXXXXXXtext = re.sub(r'\\U([0-9a-fA-F]{8})', lambda m: chr(int(m.group(1), 16)), text)return textdef _from_unicode_escape_upper(self, text):"""从大写Unicode转义序列解码"""return self._from_unicode_escape(text.replace('\\U', '\\u'))def _to_html_entity(self, text):"""转换为HTML实体"""return ''.join(f'&#{ord(char)};' if ord(char) > 127 else char for char in text)def _from_html_entity(self, text):"""从HTML实体解码"""return re.sub(r'&#(\d+);', lambda m: chr(int(m.group(1))), text)def _to_python_escape(self, text):"""转换为Python转义序列"""return text.encode('unicode_escape').decode('ascii')def _from_python_escape(self, text):"""从Python转义序列解码"""return text.encode('ascii').decode('unicode_escape')def _to_url_encode(self, text):"""转换为URL编码"""return urllib.parse.quote(text, encoding='utf-8')def _from_url_encode(self, text):"""从URL编码解码"""return urllib.parse.unquote(text, encoding='utf-8')def _to_base64(self, text):"""转换为Base64"""encoded = base64.b64encode(text.encode('utf-8'))return encoded.decode('ascii')def _from_base64(self, text):"""从Base64解码"""try:decoded = base64.b64decode(text)return decoded.decode('utf-8')except Exception as e:return f"Base64解码错误: {str(e)}"def _to_all_escape(self, text):"""所有字符都转义"""return ''.join(f'\\u{ord(char):04x}' for char in text)def _from_all_escape(self, text):"""从全转义解码"""return self._from_unicode_escape(text)def show_char_info(self, text):"""显示字符信息"""print("\n" + "="*60)print("📊 字符信息分析:")print("="*60)for i, char in enumerate(text):code_point = ord(char)# 处理特殊字符显示if char == '\n':char_display = '↵'  # 换行符显示为↵elif char == '\t':char_display = '→'  # 制表符显示为→elif char == '\r':char_display = '⏎'  # 回车符显示为⏎elif not char.isprintable():char_display = f'[U+{code_point:04X}]'else:char_display = charprint(f"📍 位置 {i:3d}: '{char_display}' -> U+{code_point:04X} (十进制: {code_point:5d})")if i >= 19:  # 限制显示数量print("... (更多字符未显示)")breakprint("="*60)def show_main_menu(self):"""显示主菜单"""print("\n" + "🔐" * 25)print("      Unicode全字符集加解密工具")print("🔐" * 25)print("1. 📝 文本编码")print("2. 📝 文本解码") print("3. 📁 文件加密")print("4. 📁 文件解密")print("5. 🔍 字符信息分析")print("6. 📋 显示所有编码方法")print("7. 🚪 退出")print("-" * 50)def show_encoding_methods(self):"""显示编码方法菜单"""print("\n📋 选择编码方法:")print("-" * 40)for key, (desc, _) in self.encoding_methods.items():print(f"  {key}. {desc}")print("-" * 40)def show_decoding_methods(self):"""显示解码方法菜单"""print("\n📋 选择解码方法:")print("-" * 40)for key, (desc, _) in self.decoding_methods.items():print(f"  {key}. {desc}")print("-" * 40)def get_multiline_input(self, prompt):"""获取多行文本输入"""print(f"\n{prompt}")print("💡 提示: 输入完内容后,在新的一行输入 'END' 并回车结束输入")print("─" * 50)lines = []while True:try:line = input()if line.strip() == 'END':breaklines.append(line)except EOFError:breakexcept KeyboardInterrupt:print("\n⏹️ 输入中断")return Nonereturn '\n'.join(lines)def encode_text_interactive(self):"""交互式文本编码"""self.show_encoding_methods()choice = input("请选择编码方法 (1-7): ").strip()if choice not in self.encoding_methods:print("❌ 无效选择!")returntext = self.get_multiline_input("📝 请输入要编码的文本:")if text is None:returnif not text.strip():print("❌ 输入不能为空!")returnmethod_name, encode_func = self.encoding_methods[choice]result = encode_func(text)print(f"\n✅ 编码结果 ({method_name}):")print("─" * 50)print(result)print("─" * 50)# 询问是否显示字符信息if input("\n🔍 是否显示字符信息? (y/N): ").lower() == 'y':self.show_char_info(text)def decode_text_interactive(self):"""交互式文本解码"""self.show_decoding_methods()choice = input("请选择解码方法 (1-7): ").strip()if choice not in self.decoding_methods:print("❌ 无效选择!")returntext = self.get_multiline_input("📝 请输入要解码的文本:")if text is None:returnif not text.strip():print("❌ 输入不能为空!")returnmethod_name, decode_func = self.decoding_methods[choice]result = decode_func(text)print(f"\n✅ 解码结果 ({method_name}):")print("─" * 50)print(result)print("─" * 50)# 询问是否显示字符信息if input("\n🔍 是否显示字符信息? (y/N): ").lower() == 'y':self.show_char_info(result)def encrypt_file_interactive(self):"""交互式文件加密"""self.show_encoding_methods()choice = input("请选择加密方法 (1-7): ").strip()if choice not in self.encoding_methods:print("❌ 无效选择!")returninput_file = input("\n📁 请输入输入文件路径: ").strip()output_file = input("📁 请输入输出文件路径: ").strip()if not input_file or not output_file:print("❌ 文件路径不能为空!")returntry:with open(input_file, 'r', encoding='utf-8') as f:content = f.read()method_name, encode_func = self.encoding_methods[choice]encoded_content = encode_func(content)with open(output_file, 'w', encoding='utf-8') as f:f.write(encoded_content)print(f"\n✅ 文件加密完成: {input_file} -> {output_file}")print(f"📊 使用方法: {method_name}")except FileNotFoundError:print("❌ 输入文件不存在!")except Exception as e:print(f"❌ 文件加密失败: {str(e)}")def decrypt_file_interactive(self):"""交互式文件解密"""self.show_decoding_methods()choice = input("请选择解密方法 (1-7): ").strip()if choice not in self.decoding_methods:print("❌ 无效选择!")returninput_file = input("\n📁 请输入输入文件路径: ").strip()output_file = input("📁 请输入输出文件路径: ").strip()if not input_file or not output_file:print("❌ 文件路径不能为空!")returntry:with open(input_file, 'r', encoding='utf-8') as f:content = f.read()method_name, decode_func = self.decoding_methods[choice]decoded_content = decode_func(content)with open(output_file, 'w', encoding='utf-8') as f:f.write(decoded_content)print(f"\n✅ 文件解密完成: {input_file} -> {output_file}")print(f"📊 使用方法: {method_name}")except FileNotFoundError:print("❌ 输入文件不存在!")except Exception as e:print(f"❌ 文件解密失败: {str(e)}")def char_info_interactive(self):"""交互式字符信息分析"""text = self.get_multiline_input("📝 请输入要分析的文本:")if text is None:returnif not text.strip():print("❌ 输入不能为空!")returnself.show_char_info(text)def show_all_methods(self):"""显示所有方法"""print("\n📋 所有编码方法:")print("─" * 40)for key, (desc, _) in self.encoding_methods.items():print(f"  {key}. {desc}")print("\n📋 所有解码方法:")print("─" * 40)for key, (desc, _) in self.decoding_methods.items():print(f"  {key}. {desc}")def run(self):"""运行交互式程序"""while True:self.show_main_menu()choice = input("请选择操作 (1-7): ").strip()if choice == '1':self.encode_text_interactive()elif choice == '2':self.decode_text_interactive()elif choice == '3':self.encrypt_file_interactive()elif choice == '4':self.decrypt_file_interactive()elif choice == '5':self.char_info_interactive()elif choice == '6':self.show_all_methods()elif choice == '7':print("\n👋 感谢使用!再见!")breakelse:print("❌ 无效选择,请重新输入!")# 暂停一下让用户看到结果if choice != '7':input("\n⏎ 按回车键继续...")def main():"""主函数"""try:crypto = UnicodeCryptoCLI()crypto.run()except KeyboardInterrupt:print("\n\n👋 用户中断,程序退出!")except Exception as e:print(f"\n❌ 程序运行出错: {str(e)}")if __name__ == "__main__":main()
http://www.dtcms.com/a/586527.html

相关文章:

  • 昆明网站制作公司百度推广网站建设高端培训学校
  • 福田网站设计哪家好青海网站建设多少钱
  • 怎么在网站上做推广广州网站建设专家
  • 宽带和方向性无线信道
  • 建立一个属于自己的网站公司是做小程序还是做网站
  • 做欧洲电商看哪个网站网站开发的英文书有什么软件
  • IEC101协议解析工具
  • 仓颉(Cangjie)语言之网络编程浅析
  • 沈阳奇搜建站云建站平台哪家好
  • Linux应用开发-17-套接字
  • AI营销获客效果评估:从效率到回报的核心指标框架
  • vivo官网网站服务注册公司费用要多少
  • 竞价网站做推广怎么做代理卖东西
  • 4.2.3【2021统考真题】
  • 网站做外链多少钱青岛公司logo设计
  • 建设网站教程视频视频视频杭州电商网站建设公司
  • 石林县工程建设个体交易网站网站制作公司网站
  • 模板建站seo优化网站模板样式修改
  • 字符串- 字符串转换整数 (atoi)
  • WordPress做大站wordpress的图片代码是什么
  • 微信制作微网站开发建设网站深圳罗湖
  • 电子商务在线网站建设佛山网红公寓
  • Java零基础入门:面向对象进阶 --- OOP(下)
  • Alertmanager 安装与配置指南
  • 数字孪生平台:让航天装备管理更智能、更可靠
  • 南阳网站排名优化价格已有网站怎么修改
  • 图片网站怎么做优化桂林市区漓江水倒灌
  • 李宏毅机器学习笔记43
  • 电子邮箱注册网站申请教育课程网站建设
  • 关于支持向量机算法的学习