Pythonの標準ライブラリにはハッシュ化を簡単にできるライブラリがあるらしいので使ってみた
test1.py
# -*- coding: utf-8 -*-
import hashlib
if __name__ == "__main__":
# hashオブジェクトの作成
md5 = hashlib.md5()
# 文字列のセット
md5.update("password")
print md5.digest()
print md5.hexdigest()
test1.pyの出力結果
_Mフ;Zァeヨ・゙クぱ
5f4dcc3b5aa765d61d8327deb882cf99
import hashlib
とかいてimportする。
1.使用したいアルゴリズムに合わせてオブジェクトを作成する(今回はmd5を使用)
2.作成したオブジェクトにハッシュ化したい文字列をセットする
3..hexdigest
でハッシュ化する(.digest
はよくわからない)
ハッシュ化したら元の文字列を知ることはできないそうです。
なので、パスワードがほかの人に知られることはない!!
元のパスワードと入力されたパスワードが一致しているか調べる
入力されたパスワードもハッシュ化して、比べればいい。
hash_test.py
# -*- coding: utf-8 -*-
import hashlib
import sys
def createHash(password):
# ハッシュオブジェクトの作成
hashObj = hashlib.md5()
# ハッシュ化する文字列を指定
hashObj.update(password)
# ハッシュ化したものを返す
return hashObj.hexdigest()
if __name__ == "__main__":
# 元のパスワードをハッシュ化
checkPass = createHash("password")
# コマンドライン引数を取得
password = sys.argv[1]
# ハッシュ化
password = createHash(password)
# 入力されたパスワードが一致しているか
if checkPass == password:
print u"ログイン成功"
else:
print u"ログイン失敗"
hash_test.pyの実行結果
\python>hash_test.py pass
ログイン失敗
\python>hash_test.py password
ログイン成功
\python>hash_test.py Password
ログイン失敗
大文字・小文字も区別しているらしい(当然といえば当然か...)