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