さっしーブログ

埼玉県在住のシステムエンジニアです。基本的には技術的な内容を中心に発信していきます。

Python入門 hashlibを使ってパスワードの暗号化を行ってみよう

f:id:y_saiki:20171024233602j:plain

目次

1.環境

  • Debian7.11
  • Python2.7.3

2.hashlibとは

pythonで提供されているデータをハッシュ化するための標準モジュールです。
SHA1、SHA224、SHA256、SHA384、SHA512、RSA、MD5などのアルゴリズムを利用して暗号化することができます。

今回はこのhashlibを用いてパスワードなどをハッシュ化してみようと思います。
サービスなどで利用するパスワードをDBに保存する際にハッシュ化したものを保存するのでそこらへんのTipsとして情報提供できればと思います。

3.sha256関数を使ってパスワードの暗号化を行ってみる

パスワードに対して、一意であるidを連結して、IDとパスワードがわかれば同じハッシュ値を生成できるようにしています。
例えば、このハッシュ値をログインアカウント登録時にDBに保存しておいて、ログイン時にIDとパスワードを受け取ってハッシュ化すれば、 登録時のハッシュと同じ値が生成できるのでそのユーザーである判断ができるといったことが可能になります。

3-1.サンプルコード

hash_sample.py

#_*_ coding: utf-8 _*_

import hashlib, binascii

def safty_password(id, password):
  hash = hashlib.sha256()
  hash.update(id + password)
  return hash.hexdigest()

id = b'sassy'
password = b'test1234'
print safty_password(id, password)

3-2.実行結果

以下のような感じでIDとパスワードをハッシュに変換することができます。
補足としてSHA256で変換した場合の値の長さは64桁になります。
これはIDとパスワードを連結した長さがどれも異なっていても、一律64桁です。

root@dev:~/tmp/python# python hash_sample.py
b61e8a239a3f6c12ed8e73921baf2fa1f39a9965ee0c5735a824356f0c709e76

以上