公開鍵を使用してネットワーク上で暗号化されたデータを共有する2つのプログラムを取得しようとしていますが、難しい問題があります。暗号化されたデータ)が変更されるようです。私は他の言語との互換性を可能にするために、暗号化されたデータフォーマットと鍵のフォーマットをできるだけシンプルに保つことを望んでいます。 問題を解消するために、私は2つのプログラム、KeyreceiveとKeysendを作成しました。 彼らはこの順序で実行します。Python - 暗号化 - ネットワーク上で暗号化されたデータを送信
- Keyreceiveが
- Keysendは、作品を暗号化したファイルにエクスポートした秘密鍵を保存し、起動し
- Keysendが起動し、暗号化されたデータを受信するのを待つとRSA鍵を生成し、データのと
- Keyreceiveが同じファイルから秘密鍵をインポートし、ネットワーク経由Keyreceiveするためにそれを送信し、結果を確認するために
- Keysendも暗号化されたデータを復号化し、暗号化されたデータを復号化するためにそれを使用しています
Keysend.py
import socket
import os
from Crypto.PublicKey import RSA
from Crypto import Random
rng = Random.new().read
RSAkey = RSA.generate(1024, rng)
privatekey = RSAkey
publickey = RSAkey.publickey()
print(privatekey.exportKey()) #export under the 'PEM' format (I think)
print(publickey.exportKey())
file = open("Keys.txt", "w")
file.write(privatekey.exportKey()) #save exported private key
file.close()
data = "hello world"
enc_data = publickey.encrypt(data, 16) #encrypt message with public key
print(str(enc_data))
host = "localhost"
port = 12800
connexion = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
connexion.connect((host, port))
connexion.send(str(enc_data)) # send encrypted data, this appears to be the source of the problem
dec_data = RSAkey.decrypt(enc_data) # test decryption
print(dec_data)
os.system("pause")
Keyreceive.py
import socket
import os
from Crypto.PublicKey import RSA
from Crypto import Random
host = ''
port = 12800
connexion = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
connexion.bind((host, port))
connexion.listen(5)
clientconnexion, connexioninfo = connexion.accept()
enc_data = clientconnexion.recv(1024) # receive encrypted data
print(enc_data)
file = open("Keys.txt", "r")
privatestr = file.read() # retrieve exported private key from file
file.close()
print(privatestr)
privatekey = RSA.importKey(privatestr) # import private key
data = privatekey.decrypt(enc_data) # decrypt sent encrypted data
print(data)
os.system("pause")
両方のファイルが暗号化されたデータを復号化が終了した後、Keysenderは、元のメッセージを出力: "こんにちは世界" を、 KeyRceiverはぎこちなく出力します。 暗号化されたデータとキー形式に「隠された」情報がある場合、「純粋な」テキスト形式で書き込む方法がありますか?
秘密鍵を持つファイルは安全にどのように転送されますか?これは絶望的に安全ではないことが分かりますか? SSLとは対照的に? – EJP