|
|
@ -43,7 +43,7 @@ def main():
|
|
|
|
letter.recvPubKey = getRecvPubKey()
|
|
|
|
letter.recvPubKey = getRecvPubKey()
|
|
|
|
letter.senderPubKey = getSenderPubKey()
|
|
|
|
letter.senderPubKey = getSenderPubKey()
|
|
|
|
letter.fileBase64, akey = SymEncryption(base64.b64encode(data).decode("utf-8"),letterSymKey)
|
|
|
|
letter.fileBase64, akey = SymEncryption(base64.b64encode(data).decode("utf-8"),letterSymKey)
|
|
|
|
letter.encryptKey = getEncryptKey()
|
|
|
|
letter.encryptKey = getEncryptKey(letter.recvPubKey)
|
|
|
|
letter.encryptType = getEncryptType()
|
|
|
|
letter.encryptType = getEncryptType()
|
|
|
|
|
|
|
|
|
|
|
|
letter.sign = getSign(data)
|
|
|
|
letter.sign = getSign(data)
|
|
|
@ -106,13 +106,13 @@ def selectSymEncryptionChoice():
|
|
|
|
# 选择加密算法的模式
|
|
|
|
# 选择加密算法的模式
|
|
|
|
while True:
|
|
|
|
while True:
|
|
|
|
if encryWay == "aes":
|
|
|
|
if encryWay == "aes":
|
|
|
|
encryMode = input("选择加密算法模式 (ecb/cbc/cfb/ofb): ").strip().lower()
|
|
|
|
encryMode = input("选择加密算法模式 (ecb/cbc): ").strip().lower()
|
|
|
|
if encryMode in ["ecb", "cbc", "cfb", "ofb"]:
|
|
|
|
if encryMode in ["ecb", "cbc"]:
|
|
|
|
letterMode = encryMode
|
|
|
|
letterMode = encryMode
|
|
|
|
print(f"已选择 '{encryMode}' 加密模式.")
|
|
|
|
print(f"已选择 '{encryMode}' 加密模式.")
|
|
|
|
break # 输入有效后退出循环
|
|
|
|
break # 输入有效后退出循环
|
|
|
|
else:
|
|
|
|
else:
|
|
|
|
print("非法输入,请输入 ecb/cbc/cfb/ofb")
|
|
|
|
print("非法输入,请输入 ecb/cbc")
|
|
|
|
|
|
|
|
|
|
|
|
elif encryWay == "sm4":
|
|
|
|
elif encryWay == "sm4":
|
|
|
|
encryMode = input("选择加密模式 (ecb/cbc): ").strip().lower()
|
|
|
|
encryMode = input("选择加密模式 (ecb/cbc): ").strip().lower()
|
|
|
@ -166,16 +166,20 @@ def getEncryptType():
|
|
|
|
|
|
|
|
|
|
|
|
return encryType
|
|
|
|
return encryType
|
|
|
|
|
|
|
|
|
|
|
|
# 对称密钥,返回的是使用接收方公钥加密后的密钥
|
|
|
|
# 对称密钥,返回的是使用接收方公钥加密后的对称密钥
|
|
|
|
def getEncryptKey():
|
|
|
|
def getEncryptKey(getRecvPubKey):
|
|
|
|
rsaEncrySymKey = RSA.encrypt_message(letterSymKey, getRecvPubKey())
|
|
|
|
rsaEncrySymKey = RSA.encrypt_message(letterSymKey, getRecvPubKey)
|
|
|
|
|
|
|
|
|
|
|
|
return base64.b64encode(rsaEncrySymKey).decode("utf-8")
|
|
|
|
return base64.b64encode(rsaEncrySymKey).decode("utf-8")
|
|
|
|
|
|
|
|
|
|
|
|
# 获得接收方的公钥
|
|
|
|
# 获得接收方的公钥
|
|
|
|
def getRecvPubKey():
|
|
|
|
def getRecvPubKey():
|
|
|
|
# recPubKey = input("plz input Receiver's Public Key: ")
|
|
|
|
# recPubKey = input(" plz input Receiver's Public Key: ")
|
|
|
|
recPubKey = getUserKey()[1]
|
|
|
|
# 在某某地方获得对方的公钥,然后保存到某个地方,输入路径
|
|
|
|
|
|
|
|
recPubKeyPath = input("请输入接受方的公钥文件路径:")
|
|
|
|
|
|
|
|
with open(recPubKeyPath, "rb") as f:
|
|
|
|
|
|
|
|
data = f.read()
|
|
|
|
|
|
|
|
recPubKey = base64.b64encode(data).decode('utf-8')
|
|
|
|
return recPubKey
|
|
|
|
return recPubKey
|
|
|
|
|
|
|
|
|
|
|
|
# 获得发送方的公钥
|
|
|
|
# 获得发送方的公钥
|
|
|
|