【Python 3DES 加解密】

3DES(Triple Data Encryption Standard,三重数据加密标准)

3DES 是一种对称加密算法,它通过对数据进行多次 DES 加密操作来增强加密强度。

实现原理
3DES 通常使用三个不同的密钥对数据进行加密。它的基本操作流程可以是:首先使用第一个密钥进行 DES 加密,然后使用第二个密钥进行 DES 解密,最后再使用第三个密钥进行 DES 加密。这样的组合使得加密强度比单个 DES 加密更高。

用途

  1. 数据保密:对敏感信息进行加密,如个人身份信息、财务数据等,以防止未经授权的访问和泄露。
  2. 通信安全:在网络通信中加密数据,确保信息在传输过程中的机密性和完整性。
  3. 存储加密:对存储在硬盘、数据库或其他存储介质中的数据进行加密,保护数据的安全性。

然而,由于 3DES 的计算效率相对较低,并且随着计算能力的提高其安全性逐渐受到挑战,在许多新的应用场景中,更先进的加密算法如 AES(Advanced Encryption Standard)通常被优先选用。

Python 3DES 加密代码:

import os
from Crypto.Cipher import DES3
from Crypto.Util.Padding import unpad
from tkinter import filedialog
import tkinter as tk

def decrypt_file(file_path):
    # 读取加密文件内容
    with open(file_path, 'rb') as file:
        encrypted_content = file.read()

    # 3DES 解密
    key = b'IAMLOLI123123123asdfjklh'  # 与加密时使用的相同的 24 字节密钥
    cipher = DES3.new(key, DES3.MODE_ECB)
    decrypted_content = cipher.decrypt(encrypted_content)

    # 去除填充
    decrypted_content = unpad(decrypted_content, 8)

    # 恢复原文件后缀
    original_file_path = file_path[:-6]  # 去掉 ".goto4" 后缀

    # 覆盖加密文件
    with open(original_file_path, 'wb') as file:
        file.write(decrypted_content)

    # 删除加密文件
    os.remove(file_path)

def decrypt_folder(folder_path):
    # 遍历文件夹中的所有文件和子文件夹
    for root, dirs, files in os.walk(folder_path):
        for file in files:
            file_path = os.path.join(root, file)
            if file_path.endswith('.goto4'):  # 只处理加密后的文件
                decrypt_file(file_path)

def select_folder():
    root = tk.Tk()
    root.iconbitmap('mp4/mingchao.png')
    root.withdraw()  # 隐藏主窗口
    folder_path = filedialog.askdirectory()
    if folder_path:
        decrypt_folder(folder_path)
        print("解密完成!")
    else:
        print("未选择文件夹")

if __name__ == '__main__':
    select_folder()

为了方便用tk写了一个选择指定的加密文件夹的功能

演示

原文件
在这里插入图片描述
加密后
在这里插入图片描述

Python 3DES解密代码:

import os
from Crypto.Cipher import DES3
from Crypto.Util.Padding import unpad
from tkinter import filedialog
import tkinter as tk

def decrypt_file(file_path):
    # 读取加密文件内容
    with open(file_path, 'rb') as file:
        encrypted_content = file.read()

    # 3DES 解密
    key = b'IAMLOLI123123123asdfjklh'  # 与加密时使用的相同的 24 字节密钥
    cipher = DES3.new(key, DES3.MODE_ECB)
    decrypted_content = cipher.decrypt(encrypted_content)

    # 去除填充
    decrypted_content = unpad(decrypted_content, 8)

    # 恢复原文件后缀
    original_file_path = file_path[:-6]  # 去掉 ".goto4" 后缀

    # 覆盖加密文件
    with open(original_file_path, 'wb') as file:
        file.write(decrypted_content)

    # 删除加密文件
    os.remove(file_path)

def decrypt_folder(folder_path):
    # 遍历文件夹中的所有文件和子文件夹
    for root, dirs, files in os.walk(folder_path):
        for file in files:
            file_path = os.path.join(root, file)
            if file_path.endswith('.goto4'):  # 只处理加密后的文件
                decrypt_file(file_path)

def select_folder():
    root = tk.Tk()
    root.iconbitmap('mp4/mingchao.png')
    root.withdraw()  # 隐藏主窗口
    folder_path = filedialog.askdirectory()
    if folder_path:
        decrypt_folder(folder_path)
        print("解密完成!")
    else:
        print("未选择文件夹")

if __name__ == '__main__':
    select_folder()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值