Ich habe zwei Python-Skripte geschrieben. Eine davon kodiert die Datei in eine Binärdatei und speichert sie als Textdatei für die spätere Entschlüsselung. Das andere Skript kann die Textdatei wieder in lesbare Informationen umwandeln, oder zumindest ist das mein Ziel.Python binary vermasselt einige Dateien
Skript 1 (encrypt) (verwenden Sie alle .png Bilddatei als Eingabe, jede TXT-Datei als Ausgabe):
u_input = input("What file to encrypt?")
file_store = input("Where do you want to store the binary?")
character = "" #Blank for now
encrypted = "" #Blank for now, stores the bytes before they are written
with open(u_input, 'rb') as f:
while True:
c = f.read(1)
if not c:
f.close()
break
encrypted = encrypted + str(bin(ord(c))[2:].zfill(8))
print("")
print(encrypted) # This line is not necessary, but I have included it to show that the encryption works
print("")
with open(file_store, 'wb') as f:
f.write(bytes(encrypted, 'UTF-8'))
f.close()
Soweit ich sagen kann, ist dies für Textdateien in Ordnung funktioniert (. txt)
ich habe dann ein zweites Skript (die Datei) Verwenden der zuvor erstellten .txt-Datei als Quelle, jede Datei als .png dest zu entschlüsseln:
u_input =("Sourcefile:")
file_store = input("Decrypted output:")
character = ""
decoded_string = ""
with open(u_input, 'r' as f:
while True:
c = f.read(1)
if not c:
f.close()
break
character = character + c
if len(character) % 8 == 0:
decoded_string = decoded_string + chr(int(character, 2))
character = ""
with open(file_store, 'wb') as f:
f.write(bytes(decoded_string, 'UTF-8'))
f.close()
print("SUCCESS!")
Was teilweise funktioniert. d.h. es schreibt die Datei. Ich kann es jedoch nicht öffnen oder bearbeiten. Wenn ich meine Originaldatei (img.png) mit meiner zweiten Datei (img2.png) vergleiche, sehe ich, dass Zeichen ersetzt oder Zeilenumbrüche nicht korrekt eingegeben wurden. Ich kann die Datei in keinem Bildanzeige-/Bearbeitungsprogramm anzeigen. Ich verstehe nicht warum.
Bitte könnte jemand versuchen zu erklären und eine Lösung (wenn auch teilweise) zu bieten? Danke im Voraus.
Hinweis: Ich bin mir bewusst, dass meine Verwendung von „Verschlüsselung“ und „Entschlüsselung“ notwendigerweise nicht korrekt verwendet, aber das ist ein persönliches Projekt, so dass es nicht egal, ich
'"% s "% u_input'? Was erwartest du, dass 'u_input' das nicht alleine tun kann? –
Danke für deinen Vorschlag, mein Skript entsprechend bearbeitet –
Was versuchst du zu erreichen? Es sieht so aus, als würden Sie Ihren eigenen Codec rollen lassen, aber Sie können wahrscheinlich stattdessen einfach base64 verwenden. –