예제 #1
0
 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)
예제 #2
0
 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)