Exemplo n.º 1
0
def fileDecrypt(data):
    (message, encrykey) = pickle.loads(data)
    onceKey = RSAalgorithm.RsaDecrypt(encrykey, SERVERPRIVATEs)
    print("接收到的密钥", onceKey, type(onceKey))
    message = AESalgorithm.AesDecrypt(message,
                                      onceKey.decode('unicode_escape'))
    message = pickle.loads(message)
    content = base64.b64decode(message['Message'])
    print('传送的内容是', content)
    digest = message['digest']
    if RSAalgorithm.VerRsaSignal(content, digest, CLIENTPUBLICs):
        return content
Exemplo n.º 2
0
def fileEncrypt(data):
    onceKey = AESalgorithm.genKey()
    print("发送的密钥", onceKey)
    digest = RSAalgorithm.RsaSignal(data, CLIENTPRIVATE)
    message = {
        'Message': base64.b64encode(data),
        'digest': digest.decode("utf-8")
    }  # 把消息和摘要打包
    message = pickle.dumps(message)  # 转成json字符串
    message = AESalgorithm.AesEncrypt(message, onceKey)
    encrykey = RSAalgorithm.RsaEncrypt(onceKey, SERVERPUBLIC)
    MES = pickle.dumps([message, encrykey.decode('utf-8')])
    return MES
Exemplo n.º 3
0
def RecvMessage(Sock, test):
    while True:
        Message = Sock.recv(BUFF)
        (recvdata, PrivateKey) = pickle.loads(Message)
        decryptdata = RSAalgorithm.RsaDecrypt(recvdata, PrivateKey)
        if len(Message) > 0:
            print("receive message:" + decryptdata)
Exemplo n.º 4
0
def SendMessage(Sock, test):
    while True:
        SendData = input()
        (encryptdata, PrivateKey) = RSAalgorithm.RsaEncrypt(SendData)
        print('encrypted data is ' + str(encryptdata))
        Message = pickle.dumps([encryptdata, PrivateKey])
        if len(SendData) > 0:
            Sock.send(Message)
Exemplo n.º 5
0
 def RecvMsg(Sock, test):
     global CLIENTPUBLICs
     while True:
         Message = Sock.recv(BUFF)  # 收到文件
         (message, encrykey) = pickle.loads(Message)
         mykey = RSAalgorithm.RsaDecrypt(encrykey,
                                         SERVERPRIVATEs)  # 用私钥解密获得一次密钥
         decryMes = AESalgorithm.AesDecrypt(
             message, mykey.decode('utf-8'))  # 用一次密钥解密消息,获得包含消息内容和摘要的json
         decryMes = json.loads(decryMes)  # 将json转换为python字典
         content = decryMes['Message']
         digest = decryMes['digest'].encode('utf-8')
         if RSAalgorithm.VerRsaSignal(content, digest, CLIENTPUBLICs):
             strMsg = "对方:" + time.strftime(
                 "%Y-%m-%d %H:%M:%S", time.localtime(
                 )) + "通过数字签名认证,本次密钥为" + mykey.decode('utf-8') + '\n'
             txtMsgList.insert(END, strMsg, 'greencolor')
             txtMsgList.insert(END, content + '\n')
Exemplo n.º 6
0
 def sendMsg(Sock):  # 发送消息
     strMsg = "我:" + time.strftime("%Y-%m-%d %H:%M:%S",
                                   time.localtime()) + '\n'
     txtMsgList.insert(END, strMsg, 'greencolor')
     Mes = txtMsg.get('0.0', END)
     txtMsgList.insert(END, Mes)
     onceKey = AESalgorithm.genKey()  # 一次一密 密钥
     digest = RSAalgorithm.RsaSignal(Mes, CLIENTPRIVATE)  # 先hash再签名# 生成消息摘要
     message = {
         'Message': Mes,
         'digest': digest.decode("utf-8")
     }  # 把消息和摘要打包
     message = json.dumps(message)  # 转成json字符串
     message = AESalgorithm.AesEncrypt(message, onceKey)  # 合并加密
     encrykey = RSAalgorithm.RsaEncrypt(onceKey,
                                        SERVERPUBLIC)  # 用服务器公钥加密一次密钥
     txtMsg.delete('0.0', END)
     Message = pickle.dumps([message,
                             encrykey.decode('utf-8')])  # 序列化消息,用于传输
     Sock.send(Message)