Verschlüsselung einer JPG-Datei mit picrypro's AES fehlgeschlagen

Da unten ist der Code (noch nicht vollständig) Ich habe geschrieben, um verschlüsseln und entschlüsseln Dateien mit Python mit dem pycrypto-Modul.

from Crypto.Hash import SHA256 from Crypto.Cipher import AES import getpass class ED(object): def getfromuser(self,choice): if choice=='key': key=getpass.getpass('Enter AES Key (minimum 16 characters): ') if len(key)<16: print 'Key entered too short. Please try again.' self.getfromuser(choice) key=key+str(8-len(key)%8)*(8-len(key)%8) return key if choice=='IV': IV_seed=raw_input('Enter a seed for the IV: ') IV=SHA256.new() IV.update(IV_seed) IV.digest() return str(IV)[0:16] def AESEncrypt(self,key,IV,source,dest): f=open(source,"r") fstream=f.read() f.close() AES_stream=AES.new(key,AES.MODE_CBC,IV) AES_encrypted=AES_stream.encrypt(fstream) with open(dest,"w") as write_file: write_file.write(AES_encrypted) def AESDecrypt(self,key,IV,source,dest): f=open(source,"r") fstream=f.read() f.close() AES_stream=AES.new(key,AES.MODE_CBC,IV) AES_decrypted=AES_stream.decrypt(fstream) with open(dest,"w") as write_file: write_file.write(AES_decrypted) 

Als ich versuchte, eine JPG-Datei zu verschlüsseln, bekam ich folgende Fehlermeldung:

  AES_encrypted=AES_stream.encrypt(fstream) ValueError: Input strings must be a multiple of 16 in length 

Ich habe es auf einer mp4-Datei probiert und es hat gut geklappt: die Verschlüsselung und die Entschlüsselung auch.

Was ist die Ursache für diesen Fehler und wie kann ich es beheben?

One Solution collect form web for “Verschlüsselung einer JPG-Datei mit picrypro's AES fehlgeschlagen”

Ich fand die Lösung. Wenn man nicht den Ärger der Polsterung will, kann man den CFB (Cipher Feedback) Modus wie folgt verwenden:

AES_stream=AES.new(key,AES.MODE_CFB,IV)

  • Verschlüsseln und Entschlüsseln mit PyCrypto AES 256
  • Emulieren von SSHs SOCKS Proxy Tunnel in Python
  • Was ist der Unterschied zwischen Blowfish und Blowfish-Compat?
  • Wie kann ich meinen Code in python drucken
  • Alte Python Hashing von links nach rechts - warum ist es schlecht?
  • Verschlüsselung / UnEncrypt Python Scripts in C
  • AES Python Verschlüsselung und Ruby Verschlüsselung - unterschiedliche Verhalten?
  • Kann nicht 256-Bits-Zähler in AES.MODE_CTR Chiffre in Python verwenden
  • Nodejs crypto vs python hashlib
  • Wie man PGP in Python macht (Schlüssel generieren, verschlüsseln / entschlüsseln)
  • Wie AES verschlüsseln / entschlüsseln Dateien mit Python / PyCrypto in einer OpenSSL-kompatiblen Weise?
  • Python ist die beste Programmiersprache der Welt.