from Crypto.Cipher import AES from binascii import b2a_hex, a2b_hex #ECB模式 class aestest(): #***********Begin************** #************End*************** def Evidence(text,key): # 要求key长度为16 aes = aestest(key) enc = aes.encrypt(text) print(enc) detext = aes.decrypt(enc) print(detext)
时间: 2023-07-19 09:52:41 浏览: 152
这段代码实现了AES加密算法的ECB模式。其中,aestest类封装了AES加密和解密的方法,key为加密密钥,text为待加密的明文。在调用Evidence函数时,会先创建一个aestest的实例,然后调用该实例的encrypt方法对明文进行加密,接着输出加密后的密文,再调用该实例的decrypt方法对密文进行解密,最后输出解密后的明文。需要注意的是,这里的key长度必须为16字节。
相关问题
import uuid import os import winreg from binascii import b2a_hex from Crypto.Cipher import AES def reg_confirm(key_path): try: key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, key_path, 0, winreg.KEY_READ) value = winreg.QueryValueEx(key, 'UUID')[0] print("注册表值为:", value) winreg.CloseKey(key) return value except: print("注册表不存在,正在创建...") # 创建注册表 key = winreg.CreateKey(winreg.HKEY_CURRENT_USER, key_path) # 写入键值 value = str(uuid.uuid1()).replace('-', '')[:16] winreg.SetValueEx(key, 'UUID', 0, winreg.REG_SZ, value) # 关闭注册表 winreg.CloseKey(key) print("已创建并写入值:", value) return key def add_to_hex16(text: bytes): if len(text) % 16: add = 16 - (len(text) % 16) else: add = 0 text = text + (b'\0' * add) return text def encrypt(text: bytes, key): mode = AES.MODE_CBC text = add_to_hex16(text) cryptos = AES.new(key, mode, key) cipher_text = cryptos.encrypt(text) return b2a_hex(cipher_text) if __name__ == '__main__': path = input('请输入pth路径') hkey = str(reg_confirm("Software\\Jiujikeruan")).encode('utf8') with open(path, 'rb') as f1: encrypted = encrypt(f1.read(), hkey) with open(path + '.jiujikeruan', 'wb') as f2: f2.write(encrypted) 将这些代码中的path=input改为用tkgui让用户选择路径
你可以使用tkinter模块来实现GUI界面,代码如下所示:
```python
import tkinter as tk
from tkinter import filedialog
root = tk.Tk()
root.withdraw()
file_path = filedialog.askopenfilename()
if not file_path:
print('未选择文件!')
else:
print('已选择文件:', file_path)
```
将这段代码替换掉原来的`path=input('请输入pth路径')`即可。
python 帮我写一个 pkcs7 解密,算法 des_ecb hex 偏移量0123456789abcdef 秘钥 xuae5618
以下是 Python 3.x 版本的 PKCS7 解密算法,使用 DES-ECB 加密方式,偏移量为 0123456789abcdef,密钥为 xuae5618:
```python
from Crypto.Cipher import DES
from binascii import unhexlify
def pkcs7_decrypt(ciphertext, key):
# 将密文解码为二进制数据
ciphertext = unhexlify(ciphertext)
# 创建 DES 密码器,使用 ECB 模式
cipher = DES.new(key.encode(), DES.MODE_ECB)
# 解密密文
plaintext = cipher.decrypt(ciphertext)
# 去除 PKCS7 填充
padding_len = plaintext[-1]
plaintext = plaintext[:-padding_len]
# 将明文返回
return plaintext.decode()
# 测试
ciphertext = "6d1e39d9ccaecc7a"
key = "xuae5618"
plaintext = pkcs7_decrypt(ciphertext, key)
print(plaintext)
```
请将 `ciphertext` 替换成你需要解密的密文,将 `key` 替换成你的密钥,然后运行上述代码即可得到解密后的明文。
阅读全文