icon
icon

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

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

テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日  調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名  調査手法:インターネット調査

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

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

 

そもそもPHPについてよく分からないという方は、PHPとは何なのか解説した記事を読むとさらに理解が深まります。

 

なお本記事は、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を学んで未経験からWebエンジニアを目指す方法とは

実際に書いてみよう

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を使ってWebアプリケーション開発を習得できるオンラインブートキャンプPHP/Laravel講座を開催しています。

挫折しない学習方法を知れる説明動画や、現役エンジニアとのビデオ通話とチャットサポート、学習用カリキュラムを体験できる無料体験も実施しているので、ぜひ参加してみてください。