1
1

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 で SHA-256 を使ったハッシュ化を実装しながら、仕組みを紐解いてみた

Last updated at Posted at 2025-02-08

はじめに

ハッシュ化は、元のデータを固定長のハッシュ値に変換する技術で、セキュリティの分野で広く利用されています。

特に、パスワードの保存やデータの整合性チェック などに欠かせない技術です。

本記事では、ハッシュ化の特徴や代表的なアルゴリズム、Python を用いた実装方法 について解説します。

書こうと思ったきっかけ

Webアプリケーションの認証機能を実装する際、パスワードの保存方法として「ハッシュ化」が重要 だと感じました。

しかし、単にハッシュ化するだけでは不十分で、適切なアルゴリズムを選ばなければセキュリティが脆弱 になることもあります。

そこで、ハッシュ化の基本と実装方法を整理し、理解を深めるためにこの記事を書きました。

ハッシュ化とは?

ハッシュ化とは、元のデータ(文字列やパスワードなど)を、不可逆な固定長のデータ(ハッシュ値) に変換する技術です。

Screenshot 2025-02-09 at 5.53.08.png
引用画像:https://www.agent-grow.com/self20percent/2018/11/19/what-is-hash/

主に パスワードの保存データの整合性チェック に利用されます。

1. ハッシュ化の特徴

  • 一方向性
    ハッシュ化されたデータから元のデータを復元できない(不可逆変換)。

  • 固定長の出力
    入力データの長さに関係なく、常に一定の長さのハッシュ値を生成。

  • 同じ入力 → 同じハッシュ値
    同じ入力データなら、常に同じハッシュ値が得られる。

  • 衝突耐性
    異なるデータが同じハッシュ値になりにくい(強いアルゴリズムほど衝突耐性が高い)。

2. 代表的なハッシュアルゴリズム

アルゴリズム ハッシュ長 特徴
MD5 128bit(16バイト) 速いが脆弱(推奨されない)
SHA-1 160bit(20バイト) MD5より安全だが、現在は非推奨
SHA-256 256bit(32バイト) 一般的な用途に推奨される
SHA-512 512bit(64バイト) より強力なセキュリティが必要な場合に推奨
bcrypt 可変長 パスワードハッシュ化に推奨(ソルト付き)

3. Pythonでのハッシュ化の実装

SHA-256 を使ったハッシュ化

このコードがやっていることを簡単に説明すると、入力された文字列を SHA-256 でハッシュ化し、そのハッシュ値を出力する という処理です。

import hashlib

def hash_sha256(text):
    return hashlib.sha256(text.encode()).hexdigest()

# 実行例
password = "securepassword"
hashed_password = hash_sha256(password)
print(f"ハッシュ値(SHA-256): {hashed_password}")

実行結果(例)

Screenshot 2025-02-09 at 5.49.23.png

  • 「securepassword」 を SHA-256 でハッシュ化 すると、このような固定長のハッシュ値が得られる。
  • 同じ入力なら、常に同じハッシュ値になる(ハッシュの一貫性)。
  • 逆算(復元)は不可能(一方向性がある)。

まとめ

ハッシュ化は、データの一方向変換を行い、セキュリティを強化する重要な技術 です。

特に、SHA-256 や bcrypt などの適切なアルゴリズムを選ぶこと が、安全な認証システムの構築につながります。

Python を使えば簡単にハッシュ化を実装できるので、実際にコードを試しながら理解を深めていきましょう!

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?