概述

本文介绍了一个基于Python Tkinter和Sparrow加密库开发的文本加密工具。该工具提供了强大的加密功能,支持多种加密模式和压缩选项,适用于保护敏感文本信息。

核心功能

  1. 文本加密:将普通文本转换为加密格式

  2. 文本解密:将加密文本还原为原始内容

  3. 多级压缩:提供三种压缩级别选项

  4. 多种加密模式:支持二进制和四进制加密模式

  5. 密钥保护:使用密钥保护加密内容

技术架构

用户界面实现

主界面布局

class SparrowStringEncryption(tk.Tk):
    def __init__(self):
        super().__init__()
        self.title("39的信息加密工具")
        self.geometry("600x700")
        self.resizable(True, True)
        
        # 创建加密/解密实例
        self.se = SparrowEncryption()
        self.sd = SparrowDecryption()
        
        # 创建主框架
        self.main_frame = ttk.Frame(self, padding="20")
        self.main_frame.pack(fill=tk.BOTH, expand=True)
        
        # 输入文本区域
        self.input_frame = ttk.LabelFrame(self.main_frame, text="输入文本", padding="10")
        self.input_frame.pack(fill=tk.BOTH, expand=True, pady=5)
        
        self.input_text = tk.Text(self.input_frame, wrap=tk.WORD, height=6)
        self.input_text.pack(fill=tk.BOTH, expand=True)
        
        # 密钥输入区域
        self.key_frame = ttk.LabelFrame(self.main_frame, text="加密密钥", padding="10")
        self.key_frame.pack(fill=tk.X, pady=5)
        
        self.key_var = tk.StringVar()
        ttk.Label(self.key_frame, text="密钥:").pack(side=tk.LEFT, padx=5)
        ttk.Entry(self.key_frame, textvariable=self.key_var, show="*", width=40).pack(side=tk.LEFT, padx=5)
        
        # 压缩选项区域
        self.compression_frame = ttk.LabelFrame(self.main_frame, text="压缩选项", padding="10")
        self.compression_frame.pack(fill=tk.X, pady=5)
        
        self.compression_var = tk.IntVar(value=2)
        ttk.Radiobutton(self.compression_frame, text="二次压缩", variable=self.compression_var, value=2).pack(
            side=tk.LEFT, padx=10)
        ttk.Radiobutton(self.compression_frame, text="一次压缩", variable=self.compression_var, value=1).pack(
            side=tk.LEFT, padx=10)
        ttk.Radiobutton(self.compression_frame, text="不压缩", variable=self.compression_var, value=0).pack(
            side=tk.LEFT, padx=10)
        
        # 加密模式区域
        self.mode_frame = ttk.LabelFrame(self.main_frame, text="加密模式", padding="10")
        self.mode_frame.pack(fill=tk.X, pady=5)
        
        self.mode_var = tk.IntVar(value=0)
        ttk.Radiobutton(self.mode_frame, text="二进制加密", variable=self.mode_var, value=0).pack(side=tk.LEFT, padx=10)
        ttk.Radiobutton(self.mode_frame, text="四进制加密", variable=self.mode_var, value=1).pack(side=tk.LEFT, padx=10)
        
        # 操作按钮区域
        self.button_frame = ttk.Frame(self.main_frame, padding="10")
        self.button_frame.pack(fill=tk.X, pady=5)
        
        ttk.Button(self.button_frame, text="加密", command=self.encrypt_text, width=15).pack(side=tk.LEFT, padx=5)
        ttk.Button(self.button_frame, text="解密", command=self.decrypt_text, width=15).pack(side=tk.LEFT, padx=5)
        ttk.Button(self.button_frame, text="清空", command=self.clear_all, width=15).pack(side=tk.LEFT, padx=5)
        
        # 输出文本区域
        self.output_frame = ttk.LabelFrame(self.main_frame, text="输出结果", padding="10")
        self.output_frame.pack(fill=tk.BOTH, expand=True, pady=5)
        
        self.output_text = tk.Text(self.output_frame, wrap=tk.WORD, height=6, state="disabled")
        self.output_text.pack(fill=tk.BOTH, expand=True)

界面布局说明

+------------------------------------------+
| 39的信息加密工具                          |
+------------------------------------------+
| [输入文本]                               |
| +--------------------------------------+ |
| |                                      | |
| |                                      | |
| |                                      | |
| +--------------------------------------+ |
|                                          |
| [加密密钥] 密钥: [********************]   |
|                                          |
| [压缩选项] ●二次压缩 ○一次压缩 ○不压缩    |
|                                          |
| [加密模式] ●二进制加密 ○四进制加密        |
|                                          |
| [操作按钮] [加密] [解密] [清空]          |
|                                          |
| [输出结果]                               |
| +--------------------------------------+ |
| |                                      | |
| |                                      | |
| |                                      | |
| +--------------------------------------+ |
+------------------------------------------+

核心功能实现

文本加密功能

def encrypt_text(self):
    """加密文本"""
    text = self.get_input_text()
    key = self.key_var.get()

    if not text:
        messagebox.showwarning("警告", "请输入要加密的文本")
        return

    if not key:
        messagebox.showwarning("警告", "请输入加密密钥")
        return

    try:
        # 调用加密方法
        encrypted_text = self.se.order_encryption(
            string=text,
            key=key,
            effective_duration=-1,  # -1 表示永久有效
            is_compression=self.compression_var.get(),
            mode=self.mode_var.get()
        )

        self.set_output_text(encrypted_text)

    except Exception as e:
        messagebox.showerror("加密错误", f"加密过程中发生错误: {str(e)}")

文本解密功能

def decrypt_text(self):
    """解密文本"""
    text = self.get_input_text()
    key = self.key_var.get()

    if not text:
        messagebox.showwarning("警告", "请输入要解密的文本")
        return

    if not key:
        messagebox.showwarning("警告", "请输入解密密钥")
        return

    try:
        # 调用解密方法
        decrypted_text = self.sd.order_decryption(
            decompression=text,
            key=key
        )
        self.set_output_text(decrypted_text)
    except Exception as e:
        messagebox.showerror("解密错误", f"解密过程中发生错误: {str(e)}")

辅助功能

def get_input_text(self):
    """获取输入文本框中的内容"""
    return self.input_text.get("1.0", tk.END).strip()

def set_output_text(self, text):
    """设置输出文本框中的内容"""
    self.output_text.config(state="normal")
    self.output_text.delete("1.0", tk.END)
    self.output_text.insert("1.0", text)
    self.output_text.config(state="disabled")

def clear_all(self):
    """清空所有文本框"""
    self.input_text.delete("1.0", tk.END)
    self.set_output_text("")
    self.key_var.set("")

加密算法详解

Sparrow加密算法特点

  1. 多层加密:支持多次压缩和加密操作

  2. 多种加密模式

    • 二进制模式:使用二进制数据进行加密

    • 四进制模式:使用四进制数据进行加密

  3. 密钥保护:使用密钥保护加密内容

  4. 压缩选项

    • 二次压缩:最高级别的压缩和加密

    • 一次压缩:中等压缩级别

    • 不压缩:仅进行加密,不压缩数据

加密流程

  1. 接收输入文本和密钥

  2. 根据选择的压缩级别进行数据压缩

  3. 根据选择的加密模式进行数据加密

  4. 使用密钥对加密数据进行保护

  5. 输出加密结果

解密流程

  1. 接收加密文本和密钥

  2. 使用密钥验证数据有效性

  3. 根据加密模式进行数据解密

  4. 根据压缩级别进行数据解压缩

  5. 输出原始文本

使用场景

  1. 敏感信息保护:加密电子邮件、聊天记录等敏感信息

  2. 密码管理:安全存储和管理密码

  3. 文件加密:加密文本文件内容

  4. 数据传输:保护网络传输中的数据安全

  5. 隐私保护:保护个人隐私信息不被泄露

使用示例

示例1:加密文本

  1. 在"输入文本"区域输入要加密的内容

  2. 在"加密密钥"框中输入密钥(显示为*)

  3. 选择压缩级别(推荐"二次压缩")

  4. 选择加密模式(推荐"二进制加密")

  5. 点击"加密"按钮

  6. 加密结果将显示在"输出结果"区域

示例2:解密文本

  1. 在"输入文本"区域输入加密内容

  2. 在"加密密钥"框中输入加密时使用的密钥

  3. 点击"解密"按钮

  4. 解密后的原始文本将显示在"输出结果"区域

安全建议

  1. 使用强密钥:密钥应包含大小写字母、数字和特殊字符

  2. 定期更换密钥:对于重要数据,定期更换加密密钥

  3. 选择高级别压缩:对于敏感数据,使用"二次压缩"选项

  4. 保护密钥:不要将密钥与加密数据存储在同一位置

  5. 离线使用:对于高度敏感数据,建议在离线环境下使用

总结

Sparrow加密工具提供了一个简单而强大的文本加密解决方案,具有以下优势:

  1. 易用性:直观的用户界面,操作简单

  2. 安全性:使用强大的Sparrow加密算法

  3. 灵活性:支持多种加密模式和压缩级别

  4. 开源透明:基于Python开发,算法透明可验证

  5. 跨平台:可在Windows、MacOS和Linux系统上运行

无论是保护个人隐私还是企业敏感信息,这个工具都能提供可靠的加密解决方案。通过合理的密钥管理和加密策略,可以确保您的数据安全无忧。

下载

  1. 信息加解密V1.1.0.0

    1. 描述:

      1. 可将文本信息进行加解密

    2. 下载:

      1. 信息加解密.exe