[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>