sender 修正

准备对接Letter
sender_okToCheck
Timmoc 8 months ago
parent 938ba78c03
commit 4f0f01a1d1

@ -6,5 +6,4 @@ class Letter:
senderPubKey = "" senderPubKey = ""
fileName = "" fileName = ""
fileSize = 0
fileBase64 = "" fileBase64 = ""

@ -1,42 +1,51 @@
# 模式,文件,自己的公钥从哪里来,别人的公钥从哪里来 # 模式,文件,自己的公钥从哪里来,别人的公钥从哪里来
from encodings.base64_codec import base64_encode
from entity.Letter import Letter from entity.Letter import Letter
from tool import PriKeyHelper from tool import PriKeyHelper
from tool.PriKeyHelper import getUserKey from tool.PriKeyHelper import getUserKey
from tool.asymmetric import RSA from tool.asymmetric import RSA
from tool.symmetric.AES import AESUtils 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 from Crypto.Random import get_random_bytes
# 两个变量,记录信封 # 两个变量,记录信封
letterWay = "" letterWay = ""
letterMode = "" letterMode = ""
letterSymKey = "" letterSymKey = b""
def main(): def main():
letter = 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) 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.sign)
print(Letter.encryptType) print(letter.encryptType)
print(Letter.encryptKey) print(letter.encryptKey)
print(Letter.recvPubKey) print(letter.recvPubKey)
print(Letter.senderPubKey) print(letter.senderPubKey)
# 获取用户的公私钥对进行签名 # 获取用户的公私钥对进行签名
# 使用对方的公钥进行加密 # 使用对方的公钥进行加密
# 发送信件 # 发送信件
pass pass
def selectFile() -> str:
s = input("输入文件路径:")
return s
def sendLetter(letter: Letter, target="192.168.195.162:8426"): def sendLetter(letter: Letter, target="192.168.195.162:8426"):
# 向目标ip和端口发送指定的信件 # 向目标ip和端口发送指定的信件
@ -101,10 +110,8 @@ def SymEncryption(encryData, key: bytes = None):
encrypted_data = encrypt_ecb(encryData, key) encrypted_data = encrypt_ecb(encryData, key)
# mode 为 cbc # mode 为 cbc
else: else:
encrypted_data = decrypt_cbc_with_iv(encryData, key) encrypted_data = encrypt_cbc_with_iv(encryData, key)
letterSymKey = key letterSymKey = key
return encrypted_data, key return encrypted_data, key
# 获得签名 # 获得签名

@ -20,7 +20,7 @@ def encrypt_ecb(data: str, key: bytes) -> str:
def decrypt_ecb(encrypted_hex: str, key: bytes) -> str: def decrypt_ecb(encrypted_hex: str, key: bytes) -> str:
cipher = sm4.CryptSM4() cipher = sm4.CryptSM4()
cipher.set_key(key, sm4.SM4_DECRYPT) 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') 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) 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__": if __name__ == "__main__":
@ -73,7 +73,7 @@ if __name__ == "__main__":
# 加密 # 加密
encrypted_data = encrypt_cbc_with_iv(data, key) 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) decrypted_data = decrypt_cbc_with_iv(encrypted_data, key)

Loading…
Cancel
Save