def get_password(self, is_force_input): password = '' # パスワード入力を強制しない場合は記憶済パスワードを探す if is_force_input == False: # 記憶した暗号化済みパスワードと秘密鍵を読み出し、複合して返す try: with open('password.dat', 'rb') as f: crypted_str = pickle.load(f) with open('key.dat', 'rb') as f: key = pickle.load(f) decrypt_result = Crypt.Decrypt(crypted_str, key) return decrypt_result # そもそもファイルがなければユーザ入力 except FileNotFoundError: pass # ウィジェット作成 self.__create_widgets() #GUIを表示 self.mainloop() #入力されたパスワードを変数に保存 password = self.Password # 記憶するにチェックしていれば記憶 if self.IsRememberPassword.get(): self.save(password) return password
def get_password(self, is_force_input): password = '' # パスワード入力を強制しない場合は記憶済パスワードを探す if is_force_input == False: ret, user_path = OsDepend.get_user_path() if ret != STANDARD_RETURN.OK: return STANDARD_RETURN.NOT_OK, '' # 記憶した暗号化済みパスワードと秘密鍵を読み出し、複合して返す self.external_file = ExternalFile.ExternalFile(user_path + EXTERNAL_FILE.PATH) result_pass = self.external_file.get('password') result_key = self.external_file.get('secret_key') if result_pass[0] == 0 and result_key[0] == 0: crypted_str = result_pass[1] key = result_key[1] # 16進文字列に変換して保存しているので元のバイナリに戻す crypted_str = bytes.fromhex(crypted_str) key = bytes.fromhex(key) decrypt_result = Crypt.Decrypt(crypted_str, key) return STANDARD_RETURN.OK, decrypt_result # 読み出しできなければパスワード入力させる else: pass #tkinterのインスタンスでありメインウィンドウ self.master = Tk.Tk() #BookeanVar()はTrueかFalseの2択の特殊な変数の型 #パスワードを記憶するかどうかのチェックボックス用 self.IsRememberPassword = Tk.BooleanVar() #Python3ではJavaと違って継承元のコンストラクタを暗黙的に呼び出さないので、明示的に呼び出す必要がある super().__init__(self.master) # ウィジェット作成 self.__create_widgets() #閉じるボタンが押されたときの処理 self.master.protocol("WM_DELETE_WINDOW", self.__on_closing) #GUIを表示 self.mainloop() #入力されたパスワードを変数に保存 if self.result == STANDARD_RETURN.OK: password = self.Password # 記憶するにチェックしてOKが押されていれば記憶 if self.IsRememberPassword.get(): self.save(password) return self.result, password
import os import sys sys.path.append( os.path.join(os.path.dirname(os.path.abspath(__file__)), '..\src')) import Logger import Crypt try: str = 'hogefuga' print('暗号化対象文字列:' + str) encrypt_result = Crypt.Encrypt(str) #encrypt_result[0]:暗号化した文字列 #encrypt_result[1]:秘密鍵 crypted_str = encrypt_result[0] key = encrypt_result[1] print('暗号化した文字列:', end='') print(crypted_str) decrypt_result = Crypt.Decrypt(crypted_str, key) print('復号した文字列:' + decrypt_result) except Exception as e: tb = sys.exc_info()[2] Logger.Logging("message:{0}".format(e.with_traceback(tb)))