忍者ブログ

からすまる日誌 mySQL

授業ノートのまとめ

応用(1) ハッシュとソルト

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

応用(1) ハッシュとソルト

ログイン認証を作りましょう

パスワード入力のinputは***になるようにしたい
→<input type="password">
 


database

users/3カラム

u_id
pass
nickname

はてな?
u_idをAIにしてu_nameは別に持つと思ったがそうはしないんだ?

・パスワード文字数は時代とともに増える性質があるからintの長さは多めにとる
・パスワードはハッシュするのでその意味でも長くしておく理由がある

 


ハッシュをしなくちゃいけない
ハッシュ専用のphpの関数がある

むかしはmd5(関数名)というのが使われた
md('hoge');
とか。

<?php echo md5("hoge"); ?>

→出力結果
ea703e7aa1efda0064eaa507d9e8ab7e

しかしこれは総当たり的な解析をされて使えなくなった

クリプトというアルゴリズムが考え出された
技術用語でソルトという。ハッシュ+ソルトでハッシュする
自分が好きなキーワードを仕込んで置き、
それを組み合わせてハッシュするのでわかりにくくなる

いまはこのソルトを入れるのが常識。

ソルト自身をランダムに作り、しかもハッシュして、
それを純粋にパスワードをハッシュしたものに内在させるという最新の手法がうまれた

同じ文字列をハッシュするたびに毎回違う値が出る

password_hash();

<?php echo password_hash("hoge",PASSWORD_DEFAULT); ?>

全部大文字は定数。バージョンがかわってもよろしく動く

第3引数をなしにするとランダムにソルトが生成

出力結果
$2y$10$S5H/GyQ72m8JdxWwMy3Gq.ulJwuaAEDtMVVZlhuw5ThtZqbE8uYba

$2y$10$YrpJTQZFk0zD9s7b.WNAmuSaSLkmYSuiUsfS.eJ1Wr6Un.nRPrGdq

$2y$10$.NTFtovLqwrqWTkKqXM7BOIifMZkww5EoIpBIYxgvTHkBz15wF/d.
 


みなさんpassをhogehogeで統一するよ

①出てきたものをこぴる
$2y$10$PQbARvt2wZI229dF1vAN9Ob1Tgia2xTkJvZbhq4YglLy0a.lwx8GS

②myadminの「挿入」でそれを入れる

password_hash();

第一 ハッシュする文字列
第二 PASSWORD_DEFAULT(固定)
第三 書かない
 


検証する関数
password_verify();
 
引数1 送信された値(平文)
引数2 ハッシュ済み値(DBに登録されているハッシュされたやつ)

PR

コメント

ただいまコメントを受けつけておりません。

プロフィール

HN:
karasumaru
性別:
非公開

P R