字典需要自己平时收集
from Crypto.Cipher import AES
from Crypto.Util.Padding import unpad
import base64
def decrypt_aes_ecb(ciphertext, key):
cipher = AES.new(key.encode(), AES.MODE_ECB)
decrypted_bytes = cipher.decrypt(base64.b64decode(ciphertext))
decrypted_text = unpad(decrypted_bytes, AES.block_size).decode('utf-8')
return decrypted_text
def read_from_file(file_path):
with open(file_path, 'r') as file:
return file.read()
def read_key_from_file(key_path):
with open(key_path, 'r') as key_file:
keys = key_file.read().splitlines()
return keys
if __name__ == "__main__":
# 从文件中读取密文和密钥
ciphertext_path = "cip.txt" # 替换为实际的文件路径
key_path = "key20.txt" # 替换为实际的密钥文件路径
ciphertext = read_from_file(ciphertext_path)
keys = read_key_from_file(key_path)
decryption_success = False
# 尝试每个密钥进行解密
for key in keys:
try:
decrypted_text = decrypt_aes_ecb(ciphertext, key)
print(f"Decrypted Text with Key {key}:")
print(decrypted_text)
if "success" in decrypted_text:
decryption_success = True
print("Decryption successful. Stopping further attempts.")
break # 解密成功并包含"success",停止尝试其他密钥
except Exception as e:
print(f"Decryption with Key {key} failed: {str(e)}")
if not decryption_success:
print("Decryption unsuccessful with all keys.")
运行效果
密文数据
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