AES只留下CBC和ECB模式,删除了一些冗余代码

sender_okToCheck
UniDarkstars 8 months ago
parent 8ee4a2e136
commit d0d152272e

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

@ -40,9 +40,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,12 +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, decrypt_cbc_with_iv, encrypt_cbc_with_iv
from tool.symmetric.SM4 import encrypt_ecb, encrypt_cbc_with_iv
from Crypto.Random import get_random_bytes
@ -43,7 +43,7 @@ def main():
letter.fileName = getFileName(path)
letter.recvPubKey = getRecvPubKey()
letter.senderPubKey = getSenderPubKey()
letter.fileBase64, akey = SymEncryption(base64_encode(data).decode("utf-8"),letterSymKey)
letter.fileBase64, akey = SymEncryption(base64.b64encode(data).decode("utf-8"),letterSymKey)
letter.encryptKey = getEncryptKey()
letter.encryptType = getEncryptType()
@ -107,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()

@ -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