2011-09-12 22 views
2

これは私が不思議に思っていたことです。 MySQLでmd5のハッシングを処理する方が速いのですか、それともPHPで処理する必要がありますか?PHP MD5とMySQLのmd5

+1

これは本当に重要ですか(つまり、何十万行または何百万行にする必要がありますか?) –

+4

'md5'がパスワードに使用されている場合は、より速く思考しないでください。 )! – Shef

+0

は、クエリとネットワーク/ソケットの待ち時間を解析することを忘れないでください。 –

答えて

2

パフォーマンスを比較すると、目立った違いはありません(私はmysqlの実装は非常に非常に[...]ちょっと速いと思います)。

解決策を使用して、より可読性の高いコードを作成してください。私にとっては、これはPHPでハッシングのようなことをしていますが、私はあなたのコードがどのように見えるかわからないので、おそらくmysqlがあなたの仕事をより簡単にすることができます。

PS:あなたがパスワードのためにこれを使用している場合、hashingのための別のalgorithm(例えばSHA256)を使用して考えます。詳細については、wikipediaを参照し、衝突についてお読みください。

+1

私のパスワードシステムには512のハッシュと塩が含まれていても構いません。 – WojonsTech

4

実際、私はMySQL MD5の実装が高速になると思います。

PHPのネイティブmd5()には、アルゴリズムの面倒な実装が少しあります。 PHP5でMD5をハッシングする場合、より高速であることが証明されているhash('md5',$var);を使用することをお勧めします。

あなた自身のベンチマークを作成します。

this page(下のコメント)を参照してください。

0.33311605453491: hash/md5 
1.0671429634094: md5 
+0

私は基本的なバーテフォースツールを作りたかったので、次にそれを試してみましょう。 md5をパスワードに使用しない理由を示すために、彼らはmd5ジェネレータにオンラインでアクセスし、それを自分のコードにコピーすると、データベースに一致するパスワードがリストされます。 – WojonsTech

+0

私はいつも最高の常にハッシュ()を使用してmd5の1つではないと思います – WojonsTech

1

何らかのプロファイリングを実行してください。しかし、それは80-20のルールを覚えている深刻なパフォーマンスの問題を抱えています。ボトルネックがどこにあるのかをまず知ることが最善です。

私の勘は感じていません。個人的に私はMySqlを使ってMD5を実装します - ビジネスロジックをまとめてください。

+0

これは小さな個人的なプロジェクトのためですそれは長い時間がかかりますが、80-20ルールは私が働く人を殺します – WojonsTech