From 4f0f01a1d158e86a6dff6fd4e9fcdbaaafc58f64 Mon Sep 17 00:00:00 2001 From: Timmoc Date: Sun, 24 Nov 2024 20:04:56 +0800 Subject: [PATCH] =?UTF-8?q?sender=20=E4=BF=AE=E6=AD=A3=20=E5=87=86?= =?UTF-8?q?=E5=A4=87=E5=AF=B9=E6=8E=A5Letter?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- entity/Letter.py | 1 - sender/sender.py | 43 +++++++++++++++++++++++++------------------ tool/symmetric/SM4.py | 6 +++--- 3 files changed, 28 insertions(+), 22 deletions(-) diff --git a/entity/Letter.py b/entity/Letter.py index e0bcf97..5f57d59 100644 --- a/entity/Letter.py +++ b/entity/Letter.py @@ -6,5 +6,4 @@ class Letter: senderPubKey = "" fileName = "" - fileSize = 0 fileBase64 = "" diff --git a/sender/sender.py b/sender/sender.py index bfcf195..ca50838 100644 --- a/sender/sender.py +++ b/sender/sender.py @@ -1,42 +1,51 @@ # 模式,文件,自己的公钥从哪里来,别人的公钥从哪里来 -from encodings.base64_codec import base64_encode from entity.Letter import Letter from tool import PriKeyHelper from tool.PriKeyHelper import getUserKey from tool.asymmetric import RSA from tool.symmetric.AES import AESUtils -from tool.symmetric.SM4 import encrypt_ecb, decrypt_cbc_with_iv +from tool.symmetric.SM4 import encrypt_ecb, decrypt_cbc_with_iv, encrypt_cbc_with_iv from Crypto.Random import get_random_bytes # 两个变量,记录信封 letterWay = "" letterMode = "" -letterSymKey = "" +letterSymKey = b"" def main(): + letter = Letter() # 用户输入各种数据填充letter字段 - data = "Hello, AES!" + path = selectFile() + + with open(path,"rb") as f: + data = f.read() + letter.fileName = "交给你了" + letter.encryptType = getEncryptType() + letter.encryptKey = getEncryptKey() + letter.recvPubKey = getRecvPubKey() + letter.senderPubKey = getSenderPubKey() + SymEncryption(data,letterSymKey) + # data = "Hello, AES!" data, akey = SymEncryption(data) + letter.sign = getSign() + - Letter.sign = getSign() - Letter.encryptType = getEncryptType() - Letter.encryptKey = getEncryptKey() - Letter.recvPubKey = getRecvPubKey() - Letter.senderPubKey = getSenderPubKey() - print(Letter.sign) - print(Letter.encryptType) - print(Letter.encryptKey) - print(Letter.recvPubKey) - print(Letter.senderPubKey) + print(letter.sign) + print(letter.encryptType) + print(letter.encryptKey) + print(letter.recvPubKey) + print(letter.senderPubKey) # 获取用户的公私钥对进行签名 # 使用对方的公钥进行加密 # 发送信件 pass - +def selectFile() -> str: + s = input("输入文件路径:") + return s def sendLetter(letter: Letter, target="192.168.195.162:8426"): # 向目标ip和端口发送指定的信件 @@ -101,10 +110,8 @@ def SymEncryption(encryData, key: bytes = None): encrypted_data = encrypt_ecb(encryData, key) # mode 为 cbc else: - encrypted_data = decrypt_cbc_with_iv(encryData, key) - + encrypted_data = encrypt_cbc_with_iv(encryData, key) letterSymKey = key - return encrypted_data, key # 获得签名 diff --git a/tool/symmetric/SM4.py b/tool/symmetric/SM4.py index 38ee3ec..30eb982 100644 --- a/tool/symmetric/SM4.py +++ b/tool/symmetric/SM4.py @@ -20,7 +20,7 @@ def encrypt_ecb(data: str, key: bytes) -> str: def decrypt_ecb(encrypted_hex: str, key: bytes) -> str: cipher = sm4.CryptSM4() cipher.set_key(key, sm4.SM4_DECRYPT) - decrypted_data = cipher.crypt_ecb(bytes.fromhex(encrypted_hex)) + decrypted_data = cipher.crypt_ecb(base64.b64decode(encrypted_hex)) return decrypted_data.decode('utf-8') @@ -51,7 +51,7 @@ def decrypt_cbc_with_iv(encrypted_bytes_base64: str, key) -> str: # 解密数据 decrypted_data = cipher.crypt_cbc(iv, encrypted_data) - return base64.b64decode(decrypted_data).decode('utf-8') + return decrypted_data.decode("utf-8") if __name__ == "__main__": @@ -73,7 +73,7 @@ if __name__ == "__main__": # 加密 encrypted_data = encrypt_cbc_with_iv(data, key) - print(f"Encrypted: {encrypted_data.hex()}") + print(f"Encrypted: {encrypted_data}") # 解密 decrypted_data = decrypt_cbc_with_iv(encrypted_data, key)