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
1時間でできる無料体験!

ハッシュ関数と似た概念で暗号化というのがあるのですが、この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を使ってWebアプリケーション開発を習得できるオンラインブートキャンプPHP/Laravel講座を開催しています。

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

初心者・未経験でもできる。まずはテックアカデミーに相談しよう

プログラミングを独学で学習していて、このように感じた経験はないでしょうか?

  • ・調べてもほしい情報が見つからない
  • ・独学のスキルが実際の業務で通用するのか不安
  • ・目標への学習プランがわからず、迷子になりそう

テックアカデミーでは、このような 学習に不安を抱えている方へ、マンツーマンで相談できる機会を無料で提供 しています。
30分間、オンラインでどんなことでも質問し放題です。

「受けてよかった」と感じていただけるよう カウンセラーやエンジニア・デザイナー があなたの相談に真摯に向き合います。

「自分に合っているか診断してほしい」
「漠然としているが話を聞いてみたい」

こんなささいな悩みでも大丈夫です。

無理な勧誘は一切ありません ので、まずはお気軽にご参加ください。
※体験用のカリキュラムも無料で配布いたします。(1週間限定)

今なら参加者限定の割引特典付き! 無料相談を予約する