From aef23d2af72bca32d56af16181a4b412ab45852d Mon Sep 17 00:00:00 2001 From: UniDarkstars <1830018670@qq.com> Date: Mon, 25 Nov 2024 11:50:30 +0800 Subject: [PATCH 1/5] =?UTF-8?q?sender.py=20=E5=A2=9E=E5=8A=A0=E4=BA=86?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E6=96=87=E4=BB=B6=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sender/sender.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/sender/sender.py b/sender/sender.py index 27127fc..0999ec4 100644 --- a/sender/sender.py +++ b/sender/sender.py @@ -1,5 +1,7 @@ # 模式,文件,自己的公钥从哪里来,别人的公钥从哪里来 import base64 +import os +from Tools.scripts.abitype import get_fields from entity.Letter import Letter from itsdangerous import base64_encode @@ -11,7 +13,7 @@ from tool.symmetric.SM4 import encrypt_ecb, decrypt_cbc_with_iv, encrypt_cbc_wit from Crypto.Random import get_random_bytes -# 两个变量,记录信封 +# 三个全局变量,记录信封 letterWay = "" letterMode = "" letterSymKey = b"" @@ -23,7 +25,7 @@ def main(): with open(path,"rb") as f: data = f.read() - letter.fileName = "交给你了" + letter.fileName = getFileName(path) letter.recvPubKey = getRecvPubKey() letter.senderPubKey = getSenderPubKey() letter.fileBase64, akey = SymEncryption(base64_encode(data).decode("utf-8"),letterSymKey) @@ -33,6 +35,7 @@ def main(): letter.sign = getSign(data) + print(letter.fileName) print(letter.sign) @@ -49,8 +52,14 @@ def main(): pass def selectFile() -> str: s = input("输入文件路径:") + # s = "public.pem" return s +# 获得文件名 +def getFileName(fName:str) -> str: + filePath = os.path.split(fName) + return filePath[-1] + def sendLetter(letter: Letter, target="192.168.195.162:8426"): # 向目标ip和端口发送指定的信件 pass 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 2/5] =?UTF-8?q?=E8=8B=B1=E6=96=87=E6=94=B9=E4=B8=AD?= =?UTF-8?q?=E6=96=87=EF=BC=8C=E5=A2=9E=E5=8A=A0=E4=BA=86=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E9=80=89=E6=8B=A9=E7=9A=84=E9=94=99=E8=AF=AF=E5=BC=82=E5=B8=B8?= =?UTF-8?q?=E6=8A=9B=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() From 2d8ec4af3d93408101ee334b7dbe89c5a9451874 Mon Sep 17 00:00:00 2001 From: UniDarkstars <1830018670@qq.com> Date: Mon, 25 Nov 2024 13:36:45 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E8=8B=B1=E6=96=87=E6=94=B9=E4=B8=AD?= =?UTF-8?q?=E6=96=87=EF=BC=8C=E5=A2=9E=E5=8A=A0=E4=BA=86=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E9=80=89=E6=8B=A9=E7=9A=84=E9=94=99=E8=AF=AF=E5=BC=82=E5=B8=B8?= =?UTF-8?q?=E6=8A=9B=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.py | 11 +++++++++++ sender/sender.py | 4 +++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/main.py b/main.py index e69de29..ea5eb25 100644 --- a/main.py +++ b/main.py @@ -0,0 +1,11 @@ +import pyfiglet # 程序greet + +# 程序greet +print(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>") +greet = pyfiglet.figlet_format("File Secure Transfer", font="slant" , width=250) +print(greet) +print(" ") +author = " <-Made By Li-Nuo-Cheng Tan-Jun-Wen Ren-Qing-Yu->" +print(author) +print("<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<") +print(pyfiglet.FigletFont.getFonts()) \ No newline at end of file diff --git a/sender/sender.py b/sender/sender.py index 6bd4a0e..8adccca 100644 --- a/sender/sender.py +++ b/sender/sender.py @@ -1,7 +1,7 @@ # 模式,文件,自己的公钥从哪里来,别人的公钥从哪里来 import base64 import os -from Tools.scripts.abitype import get_fields + from entity.Letter import Letter from itsdangerous import base64_encode @@ -19,6 +19,8 @@ letterMode = "" letterSymKey = b"" def main(): + + letter = Letter() # 用户输入各种数据填充letter字段 path = selectFile() From e939dd5cbc5e394cf19d2402879b359cfcfe64ee Mon Sep 17 00:00:00 2001 From: UniDarkstars <1830018670@qq.com> Date: Mon, 25 Nov 2024 13:38:42 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=86main=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E9=87=8C=E7=9A=84greet=EF=BC=8C=E5=A5=BD=E7=8E=A9?= =?UTF-8?q?=E7=88=B1=E7=8E=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/main.py b/main.py index ea5eb25..dea95fd 100644 --- a/main.py +++ b/main.py @@ -1,11 +1,11 @@ import pyfiglet # 程序greet # 程序greet -print(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>") +print(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>") greet = pyfiglet.figlet_format("File Secure Transfer", font="slant" , width=250) print(greet) print(" ") author = " <-Made By Li-Nuo-Cheng Tan-Jun-Wen Ren-Qing-Yu->" print(author) -print("<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<") +print("<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<") print(pyfiglet.FigletFont.getFonts()) \ No newline at end of file From 20f2c46dfa09f40a1d69b84f5bf21e123aae0ed2 Mon Sep 17 00:00:00 2001 From: UniDarkstars <1830018670@qq.com> Date: Tue, 26 Nov 2024 10:54:23 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=BA=86=E4=B8=80?= =?UTF-8?q?=E4=B8=8Bsender.py=E7=9A=84main()=EF=BC=8C=E6=B2=A1=E5=81=9A?= =?UTF-8?q?=E5=A4=AA=E5=A4=A7=E6=94=B9=E5=8A=A8=EF=BC=8C=E5=8F=AA=E6=98=AF?= =?UTF-8?q?=E7=AC=A6=E5=90=88=E4=BA=86=E4=B8=80=E4=B8=8B=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E7=94=A8=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.py | 3 +-- sender/sender.py | 13 +++++++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/main.py b/main.py index dea95fd..ece2f7b 100644 --- a/main.py +++ b/main.py @@ -7,5 +7,4 @@ print(greet) print(" ") author = " <-Made By Li-Nuo-Cheng Tan-Jun-Wen Ren-Qing-Yu->" print(author) -print("<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<") -print(pyfiglet.FigletFont.getFonts()) \ No newline at end of file +print("<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<") \ No newline at end of file diff --git a/sender/sender.py b/sender/sender.py index 8adccca..4f02093 100644 --- a/sender/sender.py +++ b/sender/sender.py @@ -1,4 +1,6 @@ # 模式,文件,自己的公钥从哪里来,别人的公钥从哪里来 +import pyfiglet + import base64 import os @@ -20,6 +22,15 @@ letterSymKey = b"" def main(): + # greet + print("") + print(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>") + greet = pyfiglet.figlet_format("File Secure Transfer", font="slant", width=250) + print(greet) + print(" ") + author = " <-Made By Li-Nuo-Cheng Tan-Jun-Wen Ren-Qing-Yu->" + print(author) + print("<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<") letter = Letter() # 用户输入各种数据填充letter字段 @@ -33,7 +44,6 @@ def main(): letter.recvPubKey = getRecvPubKey() letter.senderPubKey = getSenderPubKey() letter.fileBase64, akey = SymEncryption(base64_encode(data).decode("utf-8"),letterSymKey) - # data = "Hello, AES!" letter.encryptKey = getEncryptKey() letter.encryptType = getEncryptType() @@ -185,5 +195,4 @@ if __name__ == "__main__": # # encryptType = f"{letterWay}_{letterMode}".upper() # print(encryptType) - main() \ No newline at end of file