Merge branch 'sender_okToCheck' into test_merge

# Conflicts:
#	sender/sender.py
sender_okToCheck
Timmoc 3 months ago
commit 753e20382a

@ -10,8 +10,6 @@ pubKeySavePath = f"{configPath}/public.pem"
class EncryptType(Enum):
AES_ECB = auto()
AES_CBC = auto()
AES_CFB = auto()
AES_OFB = auto()
SM4_ECB = auto()
SM4_CBC = auto()

@ -42,9 +42,9 @@ def handleLetter(letter: Letter):
elif type == config.EncryptType.SM4_CBC:
data = base64.b64decode(SM4.decrypt_cbc_with_iv(letter.fileBase64, key))
elif type == config.EncryptType.AES_ECB:
data = base64.b64decode(AES.AESUtils(key).decrypt(key, letter.fileBase64, "ecb"))
data = base64.b64decode(AES.AESUtils().decrypt(key, letter.fileBase64, "ecb"))
elif type == config.EncryptType.AES_CBC:
data = base64.b64decode(AES.AESUtils(key).decrypt(key, letter.fileBase64,"cbc"))
data = base64.b64decode(AES.AESUtils().decrypt(key, letter.fileBase64,"cbc"))
else:
raise KeyError("不支持的对称加密算法")

@ -6,11 +6,12 @@ import os
from entity.Letter import Letter
from itsdangerous import base64_encode
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, encrypt_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
@ -106,13 +107,13 @@ def selectSymEncryptionChoice():
# 选择加密算法的模式
while True:
if encryWay == "aes":
encryMode = input("选择加密算法模式 (ecb/cbc/cfb/ofb): ").strip().lower()
if encryMode in ["ecb", "cbc", "cfb", "ofb"]:
encryMode = input("选择加密算法模式 (ecb/cbc): ").strip().lower()
if encryMode in ["ecb", "cbc"]:
letterMode = encryMode
print(f"已选择 '{encryMode}' 加密模式.")
break # 输入有效后退出循环
else:
print("非法输入,请输入 ecb/cbc/cfb/ofb")
print("非法输入,请输入 ecb/cbc")
elif encryWay == "sm4":
encryMode = input("选择加密模式 (ecb/cbc): ").strip().lower()
@ -175,7 +176,11 @@ def getEncryptKey():
# 获得接收方的公钥
def getRecvPubKey():
# recPubKey = input("plz input Receiver's Public Key: ")
recPubKey = getUserKey()[1]
# 在某某地方获得对方的公钥然后保存到某个地方输入路径uoqu
recPubKeyPath = input("请输入接受方的公钥文件路径:")
with open(recPubKeyPath, "rb") as f:
data = f.read()
recPubKey = base64.b64encode(data).decode('utf-8')
return recPubKey
# 获得发送方的公钥

@ -24,27 +24,19 @@ class AESUtils:
def _get_encipher(self, mode: str) -> AES:
"""根据模式返回相应的加密 AES cipher"""
iv = None
iv = b'abcdefghijklmnop'
if mode == 'CBC':
iv = get_random_bytes(AES.block_size)
return AES.new(self.key, AES.MODE_CBC, iv)
elif mode == 'CFB':
return AES.new(self.key, AES.MODE_CFB)
elif mode == 'OFB':
return AES.new(self.key, AES.MODE_OFB)
else: # 默认是 ECB
return AES.new(self.key, AES.MODE_ECB)
def _get_decipher(self, dekey, mode: str) -> AES:
"""根据模式返回相应的解密 AES cipher"""
iv = None
iv = b'abcdefghijklmnop'
if mode == 'CBC':
iv = get_random_bytes(AES.block_size)
return AES.new(dekey, AES.MODE_CBC, iv)
elif mode == 'CFB':
return AES.new(dekey, AES.MODE_CFB)
elif mode == 'OFB':
return AES.new(dekey, AES.MODE_OFB)
else: # 默认是 ECB
return AES.new(dekey, AES.MODE_ECB)

Loading…
Cancel
Save