IDEA 算法加密解密工具 - Python 代码实现
IDEA 算法加密解密工具 - Python 代码实现/n/n本代码使用 Python 实现 IDEA 算法加密解密工具,支持加密解密 Word 和 Excel 文件,并提供文件夹加密解密功能。/n/n代码:/n/npython/nimport os/nfrom cryptography.hazmat.backends import default_backend/nfrom cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes/nfrom win32com.client import Dispatch/nimport tkinter as tk/nfrom tkinter import messagebox, filedialog/n/n# 密钥为16字节/nkey = b'1234567890abcdef'/ncipher = Cipher(algorithms.IDEA(key), modes.ECB(), backend=default_backend()) # 创建加密器/n/n# 加密word文件/ndef encrypt_word_file(file_path):/n word = client.Dispatch('Word.Application') # 打开Word/n word.Visible = 0 # 隐藏窗口/n doc = word.Documents.Open(file_path) # 打开文件/n doc.SaveAs(file_path + '.encrypted', FileFormat=16) # 另存为加密文件/n doc.Close()/n word.Quit()/n /n # 加密文件内容/n with open(file_path + '.encrypted', 'rb') as f:/n data = f.read()/n encrypt_data = cipher.encryptor().update(data) + cipher.encryptor().finalize()/n/n with open(file_path + '.encrypted', 'wb') as f:/n f.write(encrypt_data)/n /n return file_path + '.encrypted'/n/n# 加密Excel文件/ndef encrypt_excel_file(file_path):/n excel = client.Dispatch('Excel.Application') # 打开Excel/n excel.Visible = 0 # 隐藏窗口/n wb = excel.Workbooks.Open(file_path) # 打开文件/n wb.SaveAs(file_path + '.encrypted', FileFormat=51) # 另存为加密文件/n wb.Close()/n excel.Quit()/n /n # 加密文件内容/n with open(file_path + '.encrypted', 'rb') as f:/n data = f.read()/n encrypt_data = cipher.encryptor().update(data) + cipher.encryptor().finalize()/n/n with open(file_path + '.encrypted', 'wb') as f:/n f.write(encrypt_data)/n /n return file_path + '.encrypted'/n/n# 加密/解密文件内容/ndef IDEA_encrypt_decrypt(key, data, mode):/n cipher = Cipher(algorithms.IDEA(key), modes.ECB(), backend=default_backend())/n encryptor = cipher.encryptor() if mode == 'encrypt' else cipher.decryptor()/n encrypted_data = encryptor.update(data) + encryptor.finalize()/n return encrypted_data/n/n# 加密/解密文件/ndef encrypt_decrypt_file(file_path, mode):/n with open(file_path, 'rb') as f:/n data = f.read()/n encrypt_data = IDEA_encrypt_decrypt(key, data, mode)/n/n with open(file_path, 'wb') as f:/n f.write(encrypt_data)/n/n# 加密/解密指定文件夹下的所有文件/ndef encrypt_decrypt_folder(folder_path, mode):/n for file_name in os.listdir(folder_path):/n file_path = os.path.join(folder_path, file_name)/n if os.path.isdir(file_path):/n encrypt_decrypt_folder(file_path, mode)/n else:/n if file_name.endswith('.docx'):/n file_path = encrypt_word_file(file_path) if mode == 'encrypt' else file_path.replace('.encrypted', '')/n elif file_name.endswith('.xlsx'):/n file_path = encrypt_excel_file(file_path) if mode == 'encrypt' else file_path.replace('.encrypted', '')/n else:/n file_path = file_path/n/n encrypt_decrypt_file(file_path, mode)/n/n# 加密指定文件夹下的所有文件/ndef encrypt_folder(folder_path):/n encrypt_decrypt_folder(folder_path, 'encrypt')/n/n# 解密指定文件夹下的所有文件/ndef decrypt_folder(folder_path):/n encrypt_decrypt_folder(folder_path, 'decrypt')/n#此函数用于实际执行文件加密/解密操作/n def encrypt_decrypt_file(input_file_path, output_file_path, key):/n try:/n with open(input_file_path, 'rb') as input_file:/n with open(output_file_path, 'wb') as output_file:/n while True:/n chunk = input_file.read(1024)/n if not chunk:/n break/n encrypted_chunk = IDEA_encrypt_decrypt(key, chunk, 'encrypt' if encrypt else 'decrypt')/n output_file.write(encrypted_chunk)/n return True/n except Exception as e:/n messagebox.showerror('Error', str(e))/n return False/n #此函数可以检查输入框是否填写完整,然后调用encrypt_decrypt_file函数进行加密/解密操作/n def on_encrypt_decrypt():/n input_file_path = e_input.get()/n output_file_path = e_output.get()/n key = e_key.get()/n if not input_file_path or not output_file_path or not key:/n messagebox.showwarning('Warning', '请填写完整的输入、输出路径和密钥!')/n return/n if encrypt_decrypt_file(input_file_path, output_file_path, key):/n messagebox.showinfo('Success', '文件加密/解密成功!')/n #选择文件函数/n def on_select_input():/n file_path = filedialog.askopenfilename()/n if file_path:/n e_input.delete(0, tk.END)/n e_input.insert(0, file_path)/n #选择路径函数/n def on_select_output():/n file_path = filedialog.asksaveasfilename(defaultextension='.dat')/n if file_path:/n e_output.delete(0, tk.END)/n e_output.insert(0, file_path)/n new_window = tk.Toplevel(root_new)/n new_window.title('IDEA算法加密/解密窗口')/n new_window.geometry('2000x1000')/n # 输入文件路径/n lbl_input = tk.Label(new_window, text='输入文件路径:')/n lbl_input.pack()/n e_input = tk.Entry(new_window, width=50)/n e_input.pack()/n btn_select_input = tk.Button(new_window, text='选择文件', command=on_select_input)/n btn_select_input.pack()/n # 输出文件路径/n lbl_output = tk.Label(new_window, text='输出文件路径:')/n lbl_output.pack()/n e_output = tk.Entry(new_window, width=50)/n e_output.pack()/n btn_select_output = tk.Button(new_window, text='选择路径', command=on_select_output)/n btn_select_output.pack()/n # 密钥/n lbl_key = tk.Label(new_window, text='密钥:')/n lbl_key.pack()/n e_key = tk.Entry(new_window)/n e_key.pack()/n # 加密/解密按钮/n btn_encrypt_decrypt = tk.Button(new_window, text='加密/解密', command=on_encrypt_decrypt)/n btn_encrypt_decrypt.pack()/n/n/n代码说明:/n/n1. 使用 cryptography 库实现 IDEA 算法加密解密。/n2. 使用 win32com.client 库操作 Word 和 Excel 文件。/n3. 提供了加密解密 Word、Excel 文件和文件夹的功能。/n4. 使用 Tkinter 库构建简单的图形界面,方便用户选择文件和路径,输入密钥,执行加密解密操作。/n/n注意:/n/n1. 需要安装 cryptography 和 pywin32 库。/n2. 密钥长度必须为 16 字节。/n3. 由于使用 win32com.client 库,需要确保机器上安装了 Microsoft Office 组件。/n4. 代码仅供参考,请根据实际情况进行修改和完善。/n/n使用方法:/n/n1. 安装必要的库。/n2. 运行代码。/n3. 选择需要加密解密的文件或文件夹,输入密钥,点击 '加密/解密' 按钮。/n/n功能:/n/n* 加密解密 Word 和 Excel 文件。/n* 加密解密指定文件夹下的所有文件。/n* 提供图形界面,操作简单。/n/n示例:/n/n* 加密 Word 文件: encrypt_word_file('path/to/word_file.docx')/n* 解密 Word 文件: decrypt_folder('path/to/folder')/n/n扩展:/n/n* 可以添加更多文件格式支持。/n* 可以添加进度条显示加密解密进度。/n* 可以使用其他图形界面库构建更美观的用户界面。/n/n参考:/n/n* cryptography 库文档/n* win32com.client 库文档/n* Tkinter 库文档/n
原文地址: https://www.cveoy.top/t/topic/oF6c 著作权归作者所有。请勿转载和采集!