PHP でユーザー認証画面を作っていて、ふと思ったのが、ユーザー名とパスワードを平文のまま流すのは問題あるな、ということ。
ここはやっぱり、ユーザー名とパスワードを暗号化して保存などができればいいなと思ったので、いろいろと調べながら挑戦していました。
しかし、これがなかなかうまくいかず。
crypt 関数や md5 関数を使って複雑に暗号化させてみたものの、暗号化して保存された文字列と、Web ページから入力した文字列を暗号化したものが全然違うものになってしまう・・・。
プラグイン系の関数が使えないので、何とか crypt 関数と md5 関数を使って実現させたいところ。何が悪いのか悩みに悩んだ結果。
文字コードの問題だった・・・。
そう、Web ページからの入力は UTF-8 で見ているのに、ファイルの読み書き処理はなぜか EUC に変換していた。というか、最初は EUC で書いていたので、その名残が残ったままだったのだ。
文字コードでも暗号化した結果は変わるのね。知らなかった。
ということは、文字コードも変化させつつ暗号化させれば、さらに複雑怪奇なものになる!?
いやいや、あまりやりすぎると、新たな問題が出てくることでしょう・・・。
コメント