2017-11-25 5 views
0

Ich habe dieses Stück Code für die Verschlüsselung.Verschlüsselung funktioniert nicht richtig

from cryptography.fernet import Fernet 
key = Fernet.generate_key() 
f = Fernet(key) 
token = f.encrypt(b"something cool") 
k = f.decrypt(token) 
print(k) ` 

Dies ist die Ausgabe auf der Website zum Beispiel

b'something cool' 

Nach, dass "b" gegangen ist. Ich bin sehr neu dabei und würde gerne wissen oder verstehen, wie genau die Lösung funktioniert.

Danke

+0

Es ist ein Byte-Objekt, es sieht für mich richtig aus. –

+0

@JamesKPolk scheint mir auch so. Dies ist genau wie das Beispiel, das ich auf der Website gesehen habe. Aber das "b" ist immer noch da im entschlüsselten Text in meinem –

+0

@PatrickArtner das ist mein Tippfehler –

Antwort

1

Das 'b' bedeutet Bytes. Anstatt also mit Strings zu arbeiten, verwenden Algorithmen tatsächlich Bytes. Meine Erfahrung ist, dass was du einer Bibliothek gibst (str/bytes/array) es dir zurückgeben sollte, was Fernet macht. Ich würde einfach die Bytes zurück in eine Zeichenfolge konvertieren k.decode(“utf-8”)

+0

Ich habe das auch versucht. Immer noch das gleiche –

+0

Entschuldigung diese Antwort ist korrekt, um die Bytes zu konvertieren https://StackOverflow.com/a/606199 – raykrow

+0

Danke für die Lösung –

0

Die Verschlüsselungsfunktionen machen, was sie sollten: Bytes in und Bytes out.

Kryptographie und Verschlüsselung arbeiten mit Bytes, keine Zeichenfolgen oder andere Codierung, decrypt gibt Bytes zurück. Die eigentliche Low-Level-Entschlüsselung hat keine Ahnung von Codierungen, es kann nicht die Entschlüsselung könnte eine Zeichenfolge sein, könnte es ein Bild sein, etc.

Es liegt an den Anrufer, um Codierungen in und aus, die geeignet sind zu bieten die Daten werden verschlüsselt/entschlüsselt.

Als der Anrufer die Verschlüsselung in eine Funktion wickeln, die Sie schreiben, die die korrekten Kodierungen zur Verfügung stellt, in diesem Fall eine Zeichenfolge zu Bytes bei der Verschlüsselung und Bytes zurück zu einer Zeichenfolge bei der Entschlüsselung.