From 4dd67a326ebdc16601f940c83b7c205e7f19ab08 Mon Sep 17 00:00:00 2001 From: UniDarkstars <1830018670@qq.com> Date: Mon, 25 Nov 2024 12:28:14 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8B=B1=E6=96=87=E6=94=B9=E4=B8=AD=E6=96=87?= =?UTF-8?q?=EF=BC=8C=E5=A2=9E=E5=8A=A0=E4=BA=86=E6=96=87=E4=BB=B6=E9=80=89?= =?UTF-8?q?=E6=8B=A9=E7=9A=84=E9=94=99=E8=AF=AF=E5=BC=82=E5=B8=B8=E6=8A=9B?= =?UTF-8?q?=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sender/sender.py | 39 ++++++++++++++++++++++++++------------- 1 file changed, 26 insertions(+), 13 deletions(-) diff --git a/sender/sender.py b/sender/sender.py index 0999ec4..6bd4a0e 100644 --- a/sender/sender.py +++ b/sender/sender.py @@ -25,6 +25,8 @@ def main(): with open(path,"rb") as f: data = f.read() + + letter.fileName = getFileName(path) letter.recvPubKey = getRecvPubKey() letter.senderPubKey = getSenderPubKey() @@ -36,8 +38,7 @@ def main(): letter.sign = getSign(data) print(letter.fileName) - - + print(letter.fileBase64) print(letter.sign) print(letter.encryptType) print(letter.encryptKey) @@ -51,9 +52,19 @@ def main(): return letter # 方便recv测试,以后可以删除。 pass def selectFile() -> str: - s = input("输入文件路径:") # s = "public.pem" - return s + while True: + try: + s = input("输入文件路径:") + with open(s, "rb") as _: + pass + return s + except FileNotFoundError: + print("错误: 文件未找到,请输入正确的文件路径。") + except PermissionError: + print("错误: 无法访问该文件,请检查权限。") + except Exception as e: + print(f"发生未知错误: {e}") # 获得文件名 def getFileName(fName:str) -> str: @@ -73,34 +84,35 @@ def selectSymEncryptionChoice(): # 选择加密算法 while True: - encryWay = input("Choose the way for encryption (aes/sm4): ").strip().lower() # 统一转成小写 + encryWay = input("选择加密算法 (aes/sm4): ").strip().lower() # 统一转成小写 if encryWay in ["aes", "sm4"]: letterWay = encryWay - print(f"You have selected '{encryWay}' encryption.") + print(f"已经选择 '{encryWay}'.") break # 输入有效后退出循环 else: - print("Invalid choice. Please enter 'aes' or 'sm4'.") + print("非法选择,请输入 'aes' 或 'sm4'.") # 选择加密算法的模式 while True: if encryWay == "aes": - encryMode = input("Choose the encryption mode (ecb/cbc/cfb/ofb): ").strip().lower() + encryMode = input("选择加密算法模式 (ecb/cbc/cfb/ofb): ").strip().lower() if encryMode in ["ecb", "cbc", "cfb", "ofb"]: letterMode = encryMode - print(f"You have selected '{encryMode}' encryption mode.") + print(f"已选择 '{encryMode}' 加密模式.") break # 输入有效后退出循环 else: - print("Invalid choice. Please enter ecb/cbc/cfb/ofb") + print("非法输入,请输入 ecb/cbc/cfb/ofb") elif encryWay == "sm4": - encryMode = input("Choose the encryption mode (ecb/cbc): ").strip().lower() + encryMode = input("选择加密模式 (ecb/cbc): ").strip().lower() if encryMode in ["ecb", "cbc"]: letterMode = encryMode - print(f"You have selected '{encryMode}' encryption mode.") + print(f"已选择 '{encryMode}' 加密模式.") break # 输入有效后退出循环 else: - print("Invalid choice. Please enter ecb/cbc") + print("非法输入,请输入 enter ecb/cbc") + # 返回加密方法和加密方法的模式 return encryWay, encryMode @@ -137,6 +149,7 @@ def getSign(document_bytes): return signDocuHash +# 获得加密的方法和模式,封装信封 def getEncryptType(): encryType = f"{letterWay}_{letterMode}".upper()