LoginSignup
15
20

More than 1 year has passed since last update.

Python: 文字列のハッシュ化で安全なパスワード保存

Last updated at Posted at 2018-06-01

概要

  • たまにパスワードをそのまま(平文で)DBに保存しているという話を聞く。
  • Pythonの標準モジュールに文字列をハッシュ化できるモジュールhashlibがあったので使ってみた。

ハッシュ化とは

  • あるアルゴリズムによって文字列を規則性の見えない文字列に変換する。
  • ハッシュ化のアルゴリズムは数種類ある。
  • ハッシュ化によって生成された文字列をハッシュ値という。
  • ハッシュ値から元の文字列を生成することは難しい。
  • パスワードの管理などに利用される。
  • 逆にパスワードをそのまま保存するようなウェブサイトは安全性に疑問があるし、万が一情報が流出したら他人のアカウントで容易にログインでき、個人情報の抜き取りや他人のクレジットカードを使った買い物などが発生してしまう。
  • 一見規則性が見えないが、実際は規定のアルゴリズムにより生成されているので、何度やっても同じハッシュ値が生成される。

サンプル

  • MD5、SHA256、SHA512の3種類のハッシュ化アルゴリズムを使ってみた。
  • 大文字、小文字の判定も可能。
sample.py

# coding: utf-8

import hashlib

password = "PassWord12345"

>>> hashlib.md5(password).hexdigest()
9d314e160c006e4bddf054c516f110aa

>>> hashlib.sha256(password).hexdigest()
ed05e0bd8cd4c4d8d294522246e93705e0718fb56f9341c299f15841762d427c

>>> hashlib.sha512(password).hexdigest()
f1bea6640f6ad962db83b1413410f08d29d2c0579449e286e47293633718dc2a21b54d649da47a30e31fc11953a7cfffa8ce2ed20451eae3ba023b5e1773e800

15
20
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
20