PHPでSHA256を使う方法【初心者向け】

初心者向けにPHPでsha256を使う方法について解説しています。ハッシュ値はセキュリティやログイン処理などに使われているのでこの機会に覚えましょう!実際にソースコードを書いて説明しているので、ぜひ参考にしてみてください。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

PHPでSHA256を使う方法について解説します。

ハッシュを生成する書き方について説明しているので、ぜひ理解しておきましょう。

 

なお本記事は、TechAcademyのPHP/Laravel講座の内容をもとに紹介しています。

 

田島悠介

今回は、PHPに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

PHPでsha256を使う方法について詳しく説明していくね!

大石ゆかり

お願いします!

 

sha256とは

SHA(シャー)は「Secure Hash Algorithm」と呼ばれるハッシュ関数と呼ばれる入力値を別の値に変換するアルゴリズムの略称です。

また、ハッシュ関数は中身のアルゴリズムが異なる多くの種類があり、例えば下記のような種類はまとめてSHA-2系と呼ばれております。
SHA-256とは下記の中のにあるハッシュ関数の1つになります。

  • SHA-224
  • SHA-256 ←これ★
  • SHA-384
  • SHA-512
  • SHA-512/224
  • SHA-512/256

ハッシュ関数と似た概念で暗号化というのがあるのですが、この2つは下記の点が異なります。

【ハッシュ関数】
変換した値を元に戻す方法が用意されていない不可逆性を持つ。

【暗号化】
変換した値を元に戻す方法(復号化)が用意されている可逆性を持つ。

よく利用する場面としては、サイトなどにログインする際に必要なパスワードをハッシュ関数で変換した状態でデータベース等に保存しておくことで、データベースの中身が漏洩した場合でも不可逆性を持つハッシュ値のおかげで、ユーザのパスワードが第三者に知られる可能性を無くします。

 

sha256の書き方

PHPでSHA-256アルゴリズムでハッシュを生成する場合は、下記の関数を利用します。

・hash( )・・・文字列からハッシュを生成する際はこちらを利用します
・hash_file( )・・・ファイルからハッシュを生成する際はこちらを利用します

 

参考URL

php.net-hash
php.net-hash-file

 

[PR] PHPのプログラミングで挫折しない学習方法を動画で公開中

実際に書いてみよう

1. SHA-256で文字列からハッシュを生成してみましょう!

// 出力結果
// d8b076148c939d9d2d6eb60458969c486794a4c0fcf0632be58fa5bf6d15aafa
$original_string = "パスワード";
$hased_string = hash('sha256', $original_string);
print_r($hased_string.PHP_EOL);

 

2. SHA-256でファイル(TechAcademyのロゴ)からハッシュを生成してみましょう!

// 出力結果
// bc0eb77e54f99047ded8c40fae82129f4302bd4707ef6a258c6e0ffc95bf0132
$hashed_file = hash_file('sha256', 'https://assets.techacademy.jp/public/logo.png');
print_r($hashed_file.PHP_EOL);

 

3. hashやhash_fileで指定できるアルゴリズム一覧を確認してみましょう!

foreach (hash_algos() as $v) {
    echo $v.PHP_EOL;
}

出力結果

// md2
// md4
// md5
// sha1
// sha224
// sha256
// sha384
// sha512
// ripemd128
// ripemd160
// ripemd256
// ripemd320
// whirlpool
// tiger128,3
// tiger160,3
// tiger192,3
// tiger128,4
// tiger160,4
// tiger192,4
// snefru
// snefru256
// gost
// gost-crypto
// adler32
// crc32
// crc32b
// fnv132
// fnv1a32
// fnv164
// fnv1a64
// joaat
// haval128,3
// haval160,3
// haval192,3
// haval224,3
// haval256,3
// haval128,4
// haval160,4
// haval192,4
// haval224,4
// haval256,4
// haval128,5
// haval160,5
// haval192,5
// haval224,5
// haval256,5"

 

この記事を監修してくれた方

青木 敦史(あおきあつし)
昼間は自社のWebサービスを運営している会社でフロントエンド/バックエンドを担当しているエンジニア。

Webエンジニアの経験は5年ほどです。TechAcademyではPHP/Laravelコースを担当しています。
開発実績: メイクレッスン支援アプリ / 電力自由化パッケージ / 携帯電話料金計算 / ライブチャットサービス

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

オンラインのプログラミングスクールTechAcademyではオンラインブートキャンプPHP/Laravelコースを提供しています。

PHPやフレームワークのLaravelを使ってWebアプリケーションの開発を学ぶことができます。

現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、最短4週間で習得することが可能です。

また、現役エンジニアから学べる無料のプログラミング体験会も実施しているので、ぜひ参加してみてください。