Pythonでハッシュ値を計算(hashlib)
この記事では、Pythonの`hashlib`モジュールを使ってハッシュ値を計算する方法を説明します。MD5、SHA-1、SHA-256など、様々なハッシュアルゴリズムの使い方を例と共に解説します。
目次
- ハッシュ値とは?
- hashlibモジュールのインポート
- 様々なハッシュアルゴリズム
- サンプルコード:MD5ハッシュの計算
- サンプルコード:SHA-256ハッシュの計算
- ハッシュ値の利用例
- セキュリティに関する注意点
ハッシュ値とは?
ハッシュ値とは、任意のデータから生成される固定長の文字列です。元のデータが少しでも変化すると、ハッシュ値も大きく変化します。データの完全性確認やパスワードの保存などに利用されます。
ハッシュ関数は、入力データから一方向的にハッシュ値を生成する関数です。ハッシュ値から元のデータを求めることは(現実的には)不可能です。
hashlibモジュールのインポート
hashlibモジュールを使うには、最初にインポートする必要があります。
import hashlib
様々なハッシュアルゴリズム
hashlibモジュールは、MD5、SHA-1、SHA-256、SHA-512など、様々なハッシュアルゴリズムを提供しています。セキュリティ要件に応じて適切なアルゴリズムを選択する必要があります。SHA-256やSHA-512の方が、MD5やSHA-1よりも安全です。
サンプルコード:MD5ハッシュの計算
MD5ハッシュを計算する例です。
import hashlib
data = b"Hello, world!"
hash_md5 = hashlib.md5(data).hexdigest()
print(f"MD5ハッシュ: {hash_md5}")
上記のコードを実行すると、`Hello, world!`という文字列のMD5ハッシュが表示されます。結果は常に同じになります。
サンプルコード:SHA-256ハッシュの計算
SHA-256ハッシュを計算する例です。
import hashlib
data = b"Hello, world!"
hash_sha256 = hashlib.sha256(data).hexdigest()
print(f"SHA-256ハッシュ: {hash_sha256}")
SHA-256ハッシュはMD5ハッシュよりも長く、より安全です。
ハッシュ値の利用例
ハッシュ値は様々な用途で使用されます。
- データの完全性確認:データが改ざんされていないことを確認するために使用されます。
- パスワードの保存:パスワードを直接保存する代わりに、ハッシュ値を保存することで、セキュリティを向上させることができます。
- デジタル署名:データの改ざんを防ぎ、送信者の認証を行うために使用されます。
セキュリティに関する注意点
MD5やSHA-1は、近年では衝突攻撃に対して脆弱性が指摘されているため、セキュリティ上の要件が高い場合は、SHA-256やSHA-512などのより安全なアルゴリズムを使用する必要があります。
適切なソルトを使用することで、ハッシュ値のセキュリティをさらに向上させることができます。ソルトとは、パスワードにランダムな文字列を追加することです。
関連記事
- Pythonで文字列をエンコード・デコード(encode, decode)
- Pythonで文字列をバイト列に変換(encode)
- Pythonでバイト列を文字列に変換(decode)
- Pythonで辞書をJSONに変換(json.dumps)
- PythonでJSONを辞書に変換(json.loads)
- Pythonでsecretsを使って安全な乱数を生成 (Python 3.6以降)
- Pythonで乱数を生成(random.random, random.randint, random.uniform, random.gauss, etc.)
- Pythonでハッシュ値を計算(hashlib)
- Pythonでファイルに書き込む(write, writelines)
- Pythonでファイルを読み込む(read, readline, readlines)