#encrypting an image using AES
import binascii
from Crypto.Cipher import AES
def pad(s):
return s + b"\0" * (AES.block_size - len(s) % AES.block_size)
filename = 'path to input_image.jpg'
with open(filename, 'rb') as f:
content = f.read()
#converting the jpg to hex, trimming whitespaces and padding.
content = binascii.hexlify(content)
binascii.a2b_hex(content.replace(' ', ''))
content = pad(content)
#16 byte key and IV
#thank you stackoverflow.com
obj = AES.new('This is a key123', AES.MODE_CBC, 'This is an IV456')
ciphertext = obj.encrypt(content)
#is it right to try and convert the garbled text to hex?
ciphertext = binascii.hexlify(ciphertext)
print ciphertext
#decryption
obj2 = AES.new('This is a key123', AES.MODE_CBC, 'This is an IV456')
plaintext = obj2.decrypt(ciphertext)
#content = content.encode('utf-8')
print plaintext
#the plaintext here matches the original hex input file as it should
with open('path to - AESimageDecrypted.txt', 'wb') as g:
g.write(plaintext)
Meine Frage ist zweifach, 1), wie würde ich mich über die verschlüsselte Datei konvertieren (die vor hexlify verstümmelt), die im Grunde eine Textdatei von hex Saiten, zurück in ein Bild? Ich möchte, dass die Ausgabe als JPG auf jedem Viewer angezeigt werden kann.wie als Bild verschlüsseltes Bild anzuzeigen, ohne zu Entschlüsseln
Ich habe ein paar Dinge ausprobiert, stieß auf Kissen, außer ich kann nicht zu begreifen scheinen, wenn es tun kann, was ich will.
Jede Hilfe wäre dankbar, danke.
PS: Ich möchte dies auch mit anderen Chiffren versuchen. Also ich denke, es wäre hilfreich, wenn jemand helfen kann, wenn dieses Verständnis richtig ist:
jpg -> in binäre/hex konvertieren -> verschlüsseln -> verzerrte Ausgabe -> in bin/hex konvertieren -> konvertieren zu jpg
2) ist das obige möglich? und sollten sie in hex oder bin umgewandelt werden?
Um hexlify + encrypt zurückzusetzen, wenden Sie entschlüsseln + unhexlify? – zvone
@zvone gibt es einen Weg zu hexlify + encrypt -> in jpg konvertieren? Um klarer zu sein, würde ich gerne wissen, ob es einen Weg gibt, den verschlüsselten Chiffretext zu nehmen und diesen in ein Bild umzuwandeln? – baconSoda
Natürlich gibt es einen Weg, aber ich verstehe immer noch nicht, was das Problem ist. Erstens, warum konvertierst du das jpg überhaupt in hex? Zweitens sieht es so aus, als ob Sie alles außer dem Konvertieren von Hex in das Original haben. Sie haben das hier: http://Stackoverflow.com/q/9641440/389289 – zvone