Hallo, ich programmiere gerade eine Anwendung in Python mit Pyzmq für die Kommunikation zwischen einem PC-Client und einem Himbeer-Server. Ich brauche den PC-Client, um ein verschlüsseltes Passwort an den Himbeer-Dienst zu senden. Ich werde nur die RSA-Teile meines Codes veröffentlichen, also wenn Sie mehr Informationen oder andere Teile meines Programms benötigen, bitte sagen Sie mir.Python Warum habe ich Sonderzeichen in RSA-Verschlüsselung
Also auf meiner Himbeere mache ich den einen RSA-Schlüssel zu generieren:
from Crypto.Hash import MD5
from Crypto.PublicKey import RSA
from Crypto.Util import randpool
alea = randpool.RandomPool()
RSAKey = RSA.generate(1024,alea.get_bytes)
Dann bekomme ich n und e Parameter dieses RSAkey, die an dem Public Key entsprechen sie zu meinem PC-Client zu senden.
Wenn mein PC diese Informationen aus dem Raspberry erhalten, konstruieren i des öffentlichen Schlüssels auf dem Client:
from Crypto.Hash import MD5
from Crypto.PublicKey import RSA
def create_public_key(n,e):
key_params = (long(n),long(e))
return RSA.construct(key_params)
Dann, wenn der Benutzer sein Passwort eingibt, möchte ich es verschlüsseln:
def encrypt(text):
crypted = Client_Public_Key.encrypt(text,32)
return crypted[0]
Hier wird die crypted ich für den Text bekommen "12345":
('C?\xd2\xca7j\xa0\x0cw\x8b+R"\xc37\xe8IR\xa1\x9fu\xe7v\x0c\xcaW-\xfcXb;]\x887\xc9\xfd\xf6\x0f\xe7\xae\x08\xfe\x0b\xaa*\xfa\x1b\x95:c\x99\xcb\xc6\x9f\x1d\xe1\x84\xa6\xcb\x8adh\x97w\xacR\xff\x8c\x80\xedX\xcc\xf3\xc3\x99\x99\xe9\x92\x8e\xbf]>5\xc5\xbe\x0e*G\xe2\xf2m\xdeN\xa4\x19\xbf\xd6\xd6\x9c\xba\xf9\xc8f\xa7_\xef\x84q\x877\x90\xd3\xd5\x93\xef\x81\xfc $\x9e\x03\t\x9c\xb4\xb1D,Q',)
ich versuchte abweichen entschlüsseln (wie zB Cipher's PKCS1_OAEP) und bekomme immer diese komischen Strings. Warum bekomme ich keine normale Zahlenfolge?
Ich möchte weiterhin die Entschlüsselungsfunktion dieser Bibliothek verwenden, weil es sehr schnell ist, aber die Verschlüsselungsfunktion nervt mich ständig.
Was kann ich tun? Vielen Dank !
Auf meinem PC benutze ich Spyder mit Python 2.7.14. Auf meinem Raspberry verwende ich Python 3.5.x.
Ich werde nur auf Zaphs ausgezeichnete Antwort erweitern: Denken Sie daran, dass das * Zeichen * '\ xd2' das * Byte * 0xd2 darstellt. Also, was Sie sehen, ist das Byte-Array, das aus RSA kommt, das in eine Schnur gefüllt wird. (Drucken Sie das zufällig als 'str (encrypt (text))'? [Dieser Artikel] (https://stackoverflow.com/questions/19210414/byte-array-to-hex-string) gibt eine Methode zum Konvertieren an das Bytearray zu einer hexadezimalen Zeichenkette, vorausgesetzt, dass die Ausgabe von 'encrypt' wirklich ein Bytearray ist. – lockcmpxchg8b