Hi python people, I am trying to figure out the best way to encrypt files in python.
I've build a small script (see below) that encrypts the ubuntu 7.04 iso file in 2 minutes (I like python :) ). But I have some thoughts about it. By pure luck (?) this file happened to be N*512 bytes long so I do not have to add crap at the end - but on files of the size N*512 + M (M != 521) I will add some crap to make it fit in the algorithm. When I later decrypt I will have the stuff I do not want. How do people solve this? (By writing the number of relevant bytes in readable text in the beginning of the file?) Also I wonder if this can be solved with filestreams (Are there streams in python? The only python file streams I found in the evil search engine was stuff in other forums.) Other comments are of course also welcome, Per # crypto_hardcoded.py starts here from Crypto.Cipher import AES def encrypt2(cryptor, infile, outfile): """enly encrypt a few bytes at a time""" size = 512 bytes = infile.read(size) seek = 0 interval = 97 ctr = 0 while len(bytes) == size: seek += size if ctr % interval == 0: print '\r%15d bytes completed' % (seek), ctr += 1 outfile.write(cryptor.encrypt(bytes)) # change to this to decrypt # outfile.write(cryptor.decrypt(bytes)) bytes = infile.read(size) if len(bytes) != 0: bytes += "#" * (size - len(bytes)) outfile.write(cryptor.encrypt(bytes)) seek += len(bytes) print '\r%15d bytes completed' % (seek) if __name__ == "__main__": crptz = AES.new("my-secret_passwd") ifile = file('/tmp/ubuntu-7.04-desktop-i386.iso','r') ofile = file('/tmp/ubuntu-7.04-desktop-i386.iso.out','w') encrypt2(crptz, ifile, ofile) ifile.close() ofile.close() # crypto_hardcoded.py ends here -- http://mail.python.org/mailman/listinfo/python-list