sender修改了逻辑,RSA修改了encrypt_message中cipher_rsa.encrypt(message),原本message.encode('utf-8')

sender_okToCheck
UniDarkstars 8 months ago
parent b3a21d30cd
commit 49fb76fe56

@ -1,15 +1,37 @@
# 模式,文件,自己的公钥从哪里来,别人的公钥从哪里来
from encodings.base64_codec import base64_encode
from entity.Letter import Letter
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
from Crypto.Random import get_random_bytes
# 两个变量,记录信封
letterWay = ""
letterMode = ""
letterSymKey = ""
def main():
# 用户输入各种数据填充letter字段
data = "Hello, AES!"
data, akey = SymEncryption(data)
Letter.sign = getSign()
Letter.encryptType = getEncryptType()
Letter.encryptKey = getEncryptKey()
Letter.recvPubKey = getRecvPubKey()
Letter.senderPubKey = getSenderPubKey()
print(Letter.sign)
print(Letter.encryptType)
print(Letter.encryptKey)
print(Letter.recvPubKey)
print(Letter.senderPubKey)
# 获取用户的公私钥对进行签名
# 使用对方的公钥进行加密
# 发送信件
@ -61,36 +83,72 @@ def selectSymEncryptionChoice():
# 使用对称加密,返回加密后的数据和随机生成的密钥
def SymEncryption(encryData, key: bytes = None):
global letterSymKey
# 获得加密的方法和加密的模式
way, mode = selectSymEncryptionChoice()
if way == "aes":
aesUtils = AESUtils(key)
encryptedData, trueKey = aesUtils.encrypt(encryData, mode=mode) # 这里encryData要改为文件内容
letterSymKey = trueKey
return encryptedData,trueKey
if way == "sm4":
key = get_random_bytes(16)
if mode == "ecb":
encrypted_data = encrypt_ecb(data, key)
encrypted_data = encrypt_ecb(encryData, key)
# mode 为 cbc
else:
encrypted_data = decrypt_cbc_with_iv(data, key)
encrypted_data = decrypt_cbc_with_iv(encryData, key)
letterSymKey = key
return encrypted_data, key
# 获得签名
def getSign():
def getKey():
pass
#计算文件bytes
document_bytes = ""
priKey, pubKey = PriKeyHelper.getUserKey()
signDocuHash = RSA.sign_message(document_bytes, priKey)
return signDocuHash
def getEncryptType():
encryType = f"{letterWay}_{letterMode}".upper()
return encryType
# 对称密钥,返回的是使用接收方公钥加密后的密钥
def getEncryptKey():
rsaEncrySymKey = RSA.encrypt_message(letterSymKey, getRecvPubKey())
return rsaEncrySymKey
# 获得接收方的公钥
def getRecvPubKey():
# recPubKey = input("plz input Receiver's Public Key: ")
recPubKey = getUserKey()[1]
return recPubKey
# 获得发送方的公钥
def getSenderPubKey():
privateKey, publicKey = getUserKey()
return publicKey
if __name__ == "__main__":
# 示例数据和密钥
data = "Hello, AES!"
data, akey = SymEncryption(data)
# data = "Hello, AES!"
#
# data, akey = SymEncryption(data)
print(data,akey)
# print(data,akey)
#
# encryptType = f"{letterWay}_{letterMode}".upper()
# print(encryptType)
encryptType = f"{letterWay}_{letterMode}".upper()
print(encryptType)
main()

@ -27,7 +27,7 @@ def encrypt_message(message, public_key_base64):
public_key = RSA.import_key(public_key_bin)
# 使用公钥加密消息
cipher_rsa = PKCS1_OAEP.new(public_key)
encrypted_message = cipher_rsa.encrypt(message.encode('utf-8'))
encrypted_message = cipher_rsa.encrypt(message)
return binascii.hexlify(encrypted_message).decode('utf-8')

Loading…
Cancel
Save