2017-06-27 4 views
3

クライアントが暗号AES-256暗号化を使用して暗号化されたJSONデータを送信し、受信したファイルの解読と処理を担当するソケットを使用してクライアントサーバーアプリケーションを開発しています。AES解読が機能しない

私はローカルホスト上で暗号化を試みましたが、CentOS Serverを設定しても動作しませんでした。クライアントからの暗号化データは受信されますが、復号化されません。ここ

は、サーバーのコードです:

Serverコード

#!/usr/bin/python 

import socket 
import threading 
import Encryption 


class ThreadedServer(object): 
    def __init__(self, host, port): 
     self.host = host 
     self.port = port 
     self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
     self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) 
     self.sock.bind((self.host, self.port)) 

def listen(self): 
    self.sock.listen(5) 
    while True: 
     client, address = self.sock.accept() 
     client.settimeout(60) 
     threading.Thread(target = self.listenToClient,args = (client,address)).start() 

def listenToClient(self, client, address): 
    size = 4096 
    while True: 
     print("Receiving") 
     try: 
      data = client.recv(size) 
      if data: 
       cipher = Encryption.Encryption('mysecretpassword') 
       jsondata = cipher.decrypt(data) 
       print(jsondata) 
       self.request.close() 
      else: 
       raise socket.error('Client disconnected') 
     except: 
      client.close() 
      return False 

if __name__ == "__main__": 
    ThreadedServer(adress,port).listen() 

と暗号化ファイルがhere

+0

データサイズが、その場合にはデータが右切り捨てられる> 4096である場合、私は見ている問題があることでしょうか? –

+0

@ Jean-François私はローカルホストでこれを試しましたが、データサイズには関係ないのでうまく動作しました。 – sw1

+1

それにもかかわらず、 'data = client.recv(size)' *という行は、メッセージ境界がパケット境界に対応すると誤って想定しています。それは時々起こるかもしれませんが、それに頼ることはできません。信頼できる方法を使用して、各ネットワークメッセージの先頭に4バイトのビッグエンディアン長の値を付けるなど、メッセージの終了をサーバーが判断できるようにする必要があります。 –

答えて

3

からインスピレーションを得ているこの問題はunpadラムダ関数における互換性バージョンです:

Python 2

unpad = lambda s : s[0:-ord(s[-1])] 

Pythonの3

unpad = lambda s : s[0:-s[-1]] 
+1

ああ、バージョン間でこれらの種類のブレークがあるときは嫌いじゃないですか?あなたが1日か2日後にあなた自身の答えを受け入れることができることに注意してください(あなたはそれについてどんな評判も得られませんが、明らかにupvotesについてrepを得ます)。 –

+0

それは避けることはできません!私はすべての知識が不足していた。私はこのような詳細にもっと注意を払う必要があります!私は2日以内に答えるかもしれません。 – sw1

+0

素晴らしい。報告してくれてありがとう、私は私の心の後ろにこれを保持します。もちろんStackOverflowへようこそ。 –

関連する問題