def Dec(self, key_path): #Please choose a key? key_mgr = Key() key_mgr.SetKeyPath(key_path) key_mgr.OpenFile() #Here should choose the file path opt_info = key_mgr.GetKeyInfo() #Calculate stop_index: used_knum = (self.image.size[0] / self.blc_size + self.image.size[1] / self.blc_size) * opt_info['rl_round'] stop_index = used_knum % opt_info['wd_num'] #Set Key Cursor: key_mgr.SetKeyCursor(key_index=stop_index) for rl_round in range(0, opt_info['rl_round']): for col_index in list( reversed(range(0, self.image.size[1] / self.blc_size))): shift_times = -key_mgr.GetDecKey() self.Col(col_index, shift_times) for row_index in list( reversed(range(0, self.image.size[0] / self.blc_size))): shift_times = -key_mgr.GetDecKey() self.Row(row_index, shift_times) key_mgr.CloseFile() self.image.save(fp=self.img_path)
def Enc(self, auto=False, key_path=[], wd_num=20): #Plase Choose a file: # #If auto = True, generate a Key_map Automatically key_mgr = Key() if auto == True: key_mgr.SetKeyPath(self.img_path + '.key') key_mgr.GenKey(word_num=wd_num) else: key_mgr.SetKeyPath(key_path) key_mgr.OpenFile() #Operation Begin opt_info = key_mgr.GetKeyInfo() for rl_round in range(0, opt_info['rl_round']): for row_index in range(0, self.image.size[0] / self.blc_size): shift_times = key_mgr.GetEncKey() self.Row(row_index, shift_times) for col_index in range(0, self.image.size[1] / self.blc_size): shift_times = key_mgr.GetEncKey() self.Col(col_index, shift_times) #Operation End key_mgr.CloseFile() self.image.save(fp=self.img_path)