def TextButton3(self,event, option): if option == 1: path = self.entry1.get() self.keyEntry.delete(0, 'end') originalDirectory = os.getcwd() try: os.chdir(path) except WindowsError: self.status.configure(text="Path is invalid!", bg='red') return keyText = ''.join(Core.convert_to_chars(Core.keyGenerator())) DirectoryList = os.listdir(os.getcwd()) for i, fileName in enumerate(DirectoryList): keyText = Encrypt.Encrypt_File(fileName, keyText) self.status.configure(text="Encrypted %d out of %d files" % (i, len(DirectoryList)), bg='orange') self.keyEntry.insert(0, keyText) self.status.configure(text="Folder Encryption complete.", bg='light green') else: originalDirectory = os.getcwd() path = self.entry1.get() try: os.chdir(path) except WindowsError: self.status.configure(text="Path is invalid!", bg='red') return DirectoryList = os.listdir(os.getcwd()) for i, fileName in enumerate(DirectoryList): KeyText = self.keyEntry.get() self.status.configure(text="Decrypted %d out of %d files" % (i, len(DirectoryList)), bg='orange') Decrypt.Decrypt_File(fileName, KeyText) self.status.configure(text="Folder Decryption complete.", bg='light green') os.chdir(originalDirectory)
def Encrypt_File(filename,keyText=None): try: EncryptionFile = open(filename, 'rb') except IOError: raise IOError fileContent = EncryptionFile.read() EncryptionFile.close() key = [] if keyText==None: key = Core.keyGenerator() else: key = Core.convert_block(list(keyText)) IV, EncryptedText = Encrypt_all_blocks(fileContent,key) tempiv = ''.join(Core.convert_to_chars(IV)) Final = tempiv+EncryptedText #for i,line in enumerate(fileContent): #IV.append(None) # EncryptedText.append(None) #IV[i], EncryptedText[i] = Encrypt_all_blocks(line[:-1], key) #Final.append([tempiv,EncryptedText[i]]) keyFile = ''.join(Core.convert_to_chars(key)) EncryptionFile = open(filename, 'w') #pickle.dump(keyFile, EncryptionFile) pickle.dump(Final,EncryptionFile) EncryptionFile.close() return keyFile
def Encrypt_all_blocks(plaintext, key): plaintext_list = Core.convert_to_block(plaintext) Bit_List = Core.convert_to_ASCII(plaintext_list) IV = Core.keyGenerator() temp = IV[:] cipher = [] for block in Bit_List: AfterXOR = Core.XOR_previous_block(block, temp) cipher_block = encrypt_block(AfterXOR, key) cipher.append(cipher_block) temp = cipher_block EncryptedText = Core.convert_all_blocks_to_chars(cipher) return IV, EncryptedText
def TextButton(self,choice): global key, IV, EncryptedText self.entry2.delete(1.0, END) if (choice == 1): self.keyEntry.delete(0, 'end') message = self.entry1.get(1.0, END) key = Core.keyGenerator() IV, EncryptedText = Encrypt.Encrypt_all_blocks(message, key) msg = '' keyString = '' for x in key: keyString += chr(x) self.keyEntry.insert(0, keyString) IVString = '' for x in IV: IVString += chr(x) msg += IVString msg += EncryptedText self.label2.configure(text="Encrypted Text :") self.entry2.insert(1.0, msg) self.status.configure(text="Encryption complete.", bg='light green') else: msg = self.entry1.get("1.0", 'end-1c') keyString = self.keyEntry.get() keyList = [] if len(keyString)!=BLOCK_SIZE: self.status.configure(text="Key Length Error.",bg='orange') return for x in range(0, BLOCK_SIZE): keyList.append(ord(keyString[x])) IVList = [] for x in range(0, BLOCK_SIZE): IVList.append(ord(msg[x])) EncryptedTextActual = msg[BLOCK_SIZE:] DecryptedText = Core.remove_nulls(Decrypt.Decrypt_all_blocks(EncryptedTextActual, keyList, IVList)) self.label2.configure(text="Decrypted Text :") self.entry2.insert(1.0, DecryptedText) self.status.configure(text="Decryption complete.", bg='light green')