|
|
|
@ -26,6 +26,7 @@ from PyQt5.QtWidgets import QMessageBox,QFileDialog
|
|
|
|
|
import rsa
|
|
|
|
|
#import sm2random
|
|
|
|
|
from OpenSSL import crypto
|
|
|
|
|
import pickle
|
|
|
|
|
class Ui_MainWindow(object):
|
|
|
|
|
def setupUi(self, MainWindow,receiver):
|
|
|
|
|
MainWindow.setObjectName("MainWindow")
|
|
|
|
@ -72,7 +73,6 @@ class Ui_MainWindow(object):
|
|
|
|
|
self.enc_key = ""
|
|
|
|
|
#继承连接实例
|
|
|
|
|
self.receiver = receiver
|
|
|
|
|
|
|
|
|
|
#打开文件选择对话框
|
|
|
|
|
QMessageBox.information(MainWindow, "提示", "请选择你的私钥文件")
|
|
|
|
|
path=QFileDialog.getOpenFileName()[0]
|
|
|
|
@ -107,12 +107,15 @@ class Ui_MainWindow(object):
|
|
|
|
|
data = b""
|
|
|
|
|
while True:
|
|
|
|
|
sender_socket,addr = self.receiver.accept()
|
|
|
|
|
envelope_dict = sender_socket.recv(1024)
|
|
|
|
|
if not envelope_dict:
|
|
|
|
|
break
|
|
|
|
|
data += envelope_dict
|
|
|
|
|
print(data.decode())
|
|
|
|
|
envelope_dict = json.loads(data.decode('utf-8'))
|
|
|
|
|
while True:
|
|
|
|
|
envelope_dict = sender_socket.recv(1024)
|
|
|
|
|
if not envelope_dict:
|
|
|
|
|
break
|
|
|
|
|
data += envelope_dict
|
|
|
|
|
break
|
|
|
|
|
#将字节流转换为字典
|
|
|
|
|
print(data)
|
|
|
|
|
envelope_dict = pickle.loads(data)
|
|
|
|
|
self.signature= envelope_dict['signature']
|
|
|
|
|
self.encrypted_text = envelope_dict['encrypted_text']
|
|
|
|
|
self.enc_key = envelope_dict['enc_key']
|
|
|
|
@ -122,7 +125,7 @@ class Ui_MainWindow(object):
|
|
|
|
|
self.iv= envelope_dict['iv']
|
|
|
|
|
self.decrypt_key()
|
|
|
|
|
self.decrypt()
|
|
|
|
|
self.client.close()
|
|
|
|
|
self.receiver.close()
|
|
|
|
|
def decrypt_key(self):
|
|
|
|
|
#使用rsa私钥解密对称密钥self.enc_key,赋给self.key
|
|
|
|
|
self.key = rsa.decrypt(self.enc_key, self.private_key)
|
|
|
|
@ -132,8 +135,6 @@ class Ui_MainWindow(object):
|
|
|
|
|
# self.mode = self.mode_box.currentText()
|
|
|
|
|
self.algorithm = "AES"
|
|
|
|
|
self.mode = "CBC"
|
|
|
|
|
with open("aeskey.txt",'rb') as f:
|
|
|
|
|
self.key = "1234567890abcdef".encode("utf-8")
|
|
|
|
|
if self.algorithm=="AES":
|
|
|
|
|
if self.mode=="CBC":
|
|
|
|
|
self.mode = AES.MODE_CBC
|
|
|
|
@ -143,7 +144,7 @@ class Ui_MainWindow(object):
|
|
|
|
|
cryptor = AES.new(self.key, self.mode, self.key)
|
|
|
|
|
self.plain_text = cryptor.decrypt(a2b_hex(self.encrypted_text))
|
|
|
|
|
#print(plain_text)
|
|
|
|
|
plaintext = b2a_hex(plain_text.rstrip(b'\0')).decode("utf-8")
|
|
|
|
|
plaintext = b2a_hex(self.plain_text.rstrip(b'\0')).decode("utf-8")
|
|
|
|
|
self.textBrowser.append(plaintext)
|
|
|
|
|
|
|
|
|
|
elif self.mode=="ECB":
|
|
|
|
|