パスワードはどのように保存しますか? それとも、あらゆる場合に1つのパスワードを持っていますか? 私はそのようにそれを持っていました! まあ、それはほとんどそうです。 そのうちの2つ-識別コードと、携帯電話で構成された賢明なアナグラムがありました。
あなたが私のような人なら、猫をお願いします。
私は長い間、このようなものを書くという考えを持っていました。 そして最後に、私は自由な一日を過ごし、私はこのビジネスを実装することにしました。
アクションプラン
だから、私たちは何を見たいですか:
- プログラム自体は、たとえば登録するリソースのURLに基づいてパスワードを生成する必要があります。
- パスワードは、ブルートフォースに対して十分な耐性、つまり文字と数字を含む必要があります。
- パスワードはどこにも保存しないで、その場で生成する必要があります。
- パスワードは回復可能でなければなりません。
私はこれを想像する:
- プログラムを起動した後、パスワードを入力する必要があります(45678などの単純なものでもかまいません)。
- www.twitter.comなどのURLが必要です。
- 登録に使用する10桁のパスワードを取得します。
どのように機能しますか?
パスワードとURLを入力した後、md5の合計を取得し、文字列の連結を実行して、64文字の文字列を取得します。 次に、この行のmd5合計を取得し、最初の10文字を取得します-これがパスワードになります。 とても簡単です。
実装
私はPythonとJavaScriptが大好きですが、コンソールアプリケーションを取得したい方法であり、コンソールでJavaScripteプログラムを実行する方法がわかりません。Pythoneで記述します。 始めましょう:
import hashlib, sys, re class PassKeep: #, , ! __password = "" __length = 10 # 10 . url = "" def getMd5(self, string): # md5 . string = str(string) md5 = hashlib.md5() md5.update(string) return md5.hexdigest() def __init__(self): #, . . . self.__password = self.getMd5(self.__password) self.time = self.getMd5(time.time()) def setUrl(self, url): # url. self.url = self.getMd5(url) return self.url def setPasswd(self, passwd): # . self.__password = self.getMd5(passwd) return self.__password def decrypt(self): # , . password = self.__password # url, url = self.url # . result = self.getMd5(password + url) # md5 . passwd_candidate = result[:self.__length] # 10 . # ! , # , , n(10) . # - , - ! if (len(re.findall(r'([0-9]+)', passwd_candidate)[0]) + 3 < len(passwd_candidate)): # return passwd_candidate else: # , . result = "" count = 0 sum = 1 for symbol in passwd_candidate: # . if (sum < 4): # , . try: # int, str (). int_symbol = int(symbol) if (count%2 != 0): # . print int_symbol result += chr(122 - int_symbol) # , , ! sum += 1 count += 1 else: # , . result += symbol count += 1 except: # str . result += symbol count += 1 else: result += symbol count += 1 return result p = PassKeep() # . passwd = raw_input("Enter passwd \n") # ! p.setPasswd(passwd) url = raw_input("Enter url, like www.example.com \n") p.setUrl(url) print p.decrypt() # sys.exit(0) # .
打ち上げ
実行は非常に簡単です-passkeep.pyファイルにすべてを保存して実行します:
python passkeep.py
おわりに
私は今、このものをほぼ12時間使用しています。 5つのリソースに登録し、2でパスワードを変更しました。 最初は、パスワードは64ビットプロセッサで生成されていましたが、今では86ビットプロセッサで試しましたが、パスワードは一致しているようです。 念のため、それは私です。
そうそう。 また、このことをGithubにアップロードしました :をクリックします 。
このすべてをもう少しテストし、問題がなければ、iOS / Android / Chrome Extensionsに移植します。
実装に関する建設的なコメントを歓迎します。
ご清聴ありがとうございました。
UPD:
Dark_MX habrayuzerの追加に感謝し、 Chromeの拡張機能を見つけてくれたRomanslに感謝します。