0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Python初心者】hashlibで学ぶハッシュアルゴリズム入門

Posted at

ハッシュは、データの整合性チェックやパスワードの保存、署名の作成など、セキュリティの分野でとても重要な技術です。この記事では、Pythonの hashlib モジュールを使ってハッシュ関数を扱う基本的な方法を、自分なりに整理しておきます。

ハッシュとは?

ハッシュとは、任意の長さのデータから、一定の長さの「要約(ダイジェスト)」を計算する仕組みです。
データが一文字でも変わると、ハッシュ値も大きく変化します。

ハッシュの主な特徴は以下の通りです:

  • 元のデータには戻せない(不可逆)
  • 同じデータからは常に同じハッシュ値が得られる
  • 違うデータから同じハッシュ値が得られる可能性は極めて低い(衝突しにくい)

hashlibモジュールの基本

Pythonの標準モジュール hashlib では、SHA-256やMD5などのハッシュ関数が使えます。

よく使われる関数:

  • hashlib.sha256():強度の高いSHA-256(おすすめ)
  • hashlib.md5():昔からあるが、セキュリティには向かない(衝突が多い)

SHA-256の基本的な使い方

import hashlib

data = "hello world".encode("utf-8")  # 文字列をバイト型に変換
hash_obj = hashlib.sha256(data)       # ハッシュオブジェクトを作成
hash_hex = hash_obj.hexdigest()       # 16進数文字列で取得

print(hash_hex)
実行例:
b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9
  • encode() は、ハッシュ関数がバイト列を受け取るために必要です。
  • hexdigest() で、人が読める形式の文字列に変換できます。

他のハッシュ関数との比較

アルゴリズム 出力長さ セキュリティ 特徴
MD5 128ビット 弱い 非推奨。古いシステム向け。速い。
SHA-1 160ビット 弱い 一部で使用されていたが、現在は非推奨。
SHA-256 256ビット 強い 現在主流。セキュリティ用途で一般的。
SHA-512 512ビット 非常に強い 出力が長い。高セキュリティが必要な場面で。

ハッシュの活用例①:ファイルの改ざん検出

ダウンロードしたファイルが正しいかどうか確認するために、ハッシュを使うことがあります。

import hashlib

with open("example.txt", "rb") as f:
    file_data = f.read()

hash_value = hashlib.sha256(file_data).hexdigest()
print("ファイルのSHA-256ハッシュ:", hash_value)

ファイルの内容が1文字でも違えば、ハッシュ値もまったく異なるものになります。

ハッシュの活用例②:パスワードの保存(簡易版)

パスワードをそのまま保存するのは危険なので、ハッシュ化して保存する例です。

import hashlib

password = "mypassword123"
password_bytes = password.encode("utf-8")
hashed_pw = hashlib.sha256(password_bytes).hexdigest()

print("保存用パスワードハッシュ:", hashed_pw)

ただし、実際には「ソルト」というランダムな値を加えて保存するのが基本です(次の記事で紹介予定)。

おわりに

この記事では、hashlib を使ってハッシュ値を計算する方法をまとめました。
ハッシュは単に変換するだけでなく、データの改ざん検出や認証の安全性の確保などにも使われます。
今後さらに、ソルトや鍵導出関数(KDF)と組み合わせることで、より実用的な使い方を学んでいきたいと思います

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?