ソースコード
- import shelve,sys,random,re,string
- import pyperclip as py
- name=sys.argv[1]
- pw_shelf=shelve.open('pw')
- def strength_test(pw):#pwが強ければTrue,そうでなければFalse
- test_A=re.search(re.compile(r'[A-Z]+'),pw)
- test_a=re.search(re.compile(r'[a-z]+'),pw)
- test_0=re.search(re.compile(r'[0-9]+'),pw)
- if test_A and test_a and test_0 :
- return True
- else:
- return False
- def display_list():#登録されているnameを出力
- name_list=list(pw_shelf.keys())
- name_list.sort(key=str.lower)
- print('アルファベット順'.center(10,'-'))
- for k in name_list:
- print(k)
- print('-'*10)
- if sys.argv[1]=='list':
- sys.exit()
- if name in pw_shelf.keys():
- print(name+'のパスワードを確認しました')
- py.copy(pw_shelf[name])
- print('パスワードをコピーしました')
- else:
- print(name+'のパスワードが登録されていません\nパスワードを生成して登録しますか?(y/n)')
- yn=input()
- if yn=='y':
- print('パスワードを生成します\nパスワードの文字数を入力してください')
- character_num=int(input())
- while True:
- str=string.ascii_letters+string.digits+string.punctuation
- pw_lst=random.sample(str,character_num)
- pw=''.join(pw_lst)
- if strength_test(pw):#強いパスワードの場合ループを抜ける
- py.copy(pw)
- pw_shelf[name]=pw
- print('パスワードの登録とコピーが完了しました')
- break
- else:
- print('exit')
説明
パスワードの作成・管理を行うプログラム
大文字を含めた英数10文字でパスワードを生成し、リストによって管理するというものだ。
リストをワードかエクセルで保存、管理しようとしたが、python-doxcの仕様が理解できなった為、出来なかった。
また、このコードは何故かエラーが出てしまい動かない。
プログラミング難しい........デザイン演習が終わるころには完成させられるようになりたい。
参考文献