import os, sys from random import randrange from Crypto.Cipher import Blowfish from getpass import getpass import getopt class BFCipher: def __init__(self, pword): self.__cipher = Blowfish.new(pword) def encrypt(self, file_buffer): ciphertext = self.__cipher.encrypt(self.__pad_file(file_buffer)) return ciphertext def decrypt(self, file_buffer): cleartext = self.__depad_file(self.__cipher.decrypt(file_buffer)) return cleartext # Blowfish cipher needs 8 byte blocks to work with def __pad_file(self, file_buffer): pad_bytes = 8 - (len(file_buffer) % 8) for i in range(pad_bytes - 1): file_buffer += chr(randrange(0, 256)) # final padding byte; % by 8 to get the number of padding bytes bflag = randrange(6, 248); bflag -= bflag % 8 - pad_bytes file_buffer += chr(bflag) return file_buffer def __depad_file(self, file_buffer): pad_bytes = ord(file_buffer[-1]) % 8 if not pad_bytes: pad_bytes = 8 return file_buffer[:-pad_bytes]
Tuesday, March 18, 2008
pycrypto
i found a recipe that gives a simple example of how to use pycrypto. Here's the important part:
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment