[PHP-users 11852] Re: PHPバージョンによる相違
Osamu Shigematsu
php-users@php.gr.jp
Thu, 28 Nov 2002 08:54:08 +0900
重松です。こんにちは。
> 圧縮はしていなかったのですが、回線が遅い時は効果があり
> そうですね。今度テストしてみます。
この辺は、計算機の能力と、回線の能力とのトレードオフですね。
> > // confirm.php
> > $pdata = serialize($data);
> > $magic = md5(md5('qwerty') . md5($pdata)); // パスワードは隠すべし
>
> -- snip --
>
> 私は、
> $magic = md5(KEY) . md5($pdata);
> というように、くっつけるだけで、重松さんのように再度
> md5 をかけるというようなことはしていません。 md5 の
> 結果に再度 md5 をかけると、どのようなメリットがあるか
> お教え頂けると幸いです。
もちろん、攻撃を防止するためです。
近藤さんの方法だと、KEY は隠せても、KEY から生成するハッシュが
丸見えで、つまり、KEY を知らなくても magic が作れます。
一番大切なのは、KEY を知っているからこそ magic が作れるということです。
で、いちいち md5(md5(KEY).md5($pdata)) なのは、md5 が十分高速、
という前提でです。別に md5(KEY.$pdata) でもいいと思います。
> あと、md5 の出力は 16進数になるので、これを base64
> の用に ASCII CODE 64 文字に変換したいのですが、PHP で
> 書く場合、なにかうまい書き方はあるでしょうか?。
> scanf で、16進文字列を、数値に変換して配列で文字を
> ひっぱてくるというのはなんかスマートでないような気がして。
pack()/unpack() あたりでできそうですね。
--
Osamu Shigematsu <m5issige@mr.hitachi-medical.co.jp>