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