|
|
|
@ -1,4 +1,6 @@
|
|
|
|
|
# 模式,文件,自己的公钥从哪里来,别人的公钥从哪里来
|
|
|
|
|
import base64
|
|
|
|
|
|
|
|
|
|
from entity.Letter import Letter
|
|
|
|
|
from itsdangerous import base64_encode
|
|
|
|
|
from tool import PriKeyHelper
|
|
|
|
@ -22,14 +24,14 @@ def main():
|
|
|
|
|
with open(path,"rb") as f:
|
|
|
|
|
data = f.read()
|
|
|
|
|
letter.fileName = "交给你了"
|
|
|
|
|
letter.encryptType = getEncryptType()
|
|
|
|
|
letter.encryptKey = getEncryptKey()
|
|
|
|
|
letter.recvPubKey = getRecvPubKey()
|
|
|
|
|
letter.senderPubKey = getSenderPubKey()
|
|
|
|
|
data, akey = SymEncryption(base64_encode(data).decode("utf-8"),letterSymKey)
|
|
|
|
|
letter.fileBase64, akey = SymEncryption(base64_encode(data).decode("utf-8"),letterSymKey)
|
|
|
|
|
# data = "Hello, AES!"
|
|
|
|
|
letter.encryptKey = getEncryptKey()
|
|
|
|
|
letter.encryptType = getEncryptType()
|
|
|
|
|
|
|
|
|
|
letter.sign = getSign()
|
|
|
|
|
letter.sign = getSign(data)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -43,6 +45,7 @@ def main():
|
|
|
|
|
# 获取用户的公私钥对进行签名
|
|
|
|
|
# 使用对方的公钥进行加密
|
|
|
|
|
# 发送信件
|
|
|
|
|
return letter # 方便recv测试,以后可以删除。
|
|
|
|
|
pass
|
|
|
|
|
def selectFile() -> str:
|
|
|
|
|
s = input("输入文件路径:")
|
|
|
|
@ -83,6 +86,7 @@ def selectSymEncryptionChoice():
|
|
|
|
|
elif encryWay == "sm4":
|
|
|
|
|
encryMode = input("Choose the encryption mode (ecb/cbc): ").strip().lower()
|
|
|
|
|
if encryMode in ["ecb", "cbc"]:
|
|
|
|
|
letterMode = encryMode
|
|
|
|
|
print(f"You have selected '{encryMode}' encryption mode.")
|
|
|
|
|
break # 输入有效后退出循环
|
|
|
|
|
else:
|
|
|
|
@ -116,10 +120,9 @@ def SymEncryption(encryData, key: bytes = None):
|
|
|
|
|
return encrypted_data, key
|
|
|
|
|
|
|
|
|
|
# 获得签名
|
|
|
|
|
def getSign():
|
|
|
|
|
def getSign(document_bytes):
|
|
|
|
|
|
|
|
|
|
#计算文件bytes
|
|
|
|
|
document_bytes = ""
|
|
|
|
|
priKey, pubKey = PriKeyHelper.getUserKey()
|
|
|
|
|
signDocuHash = RSA.sign_message(document_bytes, priKey)
|
|
|
|
|
|
|
|
|
@ -134,7 +137,7 @@ def getEncryptType():
|
|
|
|
|
def getEncryptKey():
|
|
|
|
|
rsaEncrySymKey = RSA.encrypt_message(letterSymKey, getRecvPubKey())
|
|
|
|
|
|
|
|
|
|
return base64_encode(rsaEncrySymKey).decode("utf-8")
|
|
|
|
|
return base64.b64encode(rsaEncrySymKey).decode("utf-8")
|
|
|
|
|
|
|
|
|
|
# 获得接收方的公钥
|
|
|
|
|
def getRecvPubKey():
|
|
|
|
|