PHPのお勉強!

PHP TOP

md5

(PHP 4, PHP 5, PHP 7, PHP 8)

md5文字列のmd5ハッシュ値を計算する

警告

パスワードを守るためにこの関数を使うことはおすすめしません。 ハッシュアルゴリズムの高速性がその理由です。 詳細とベストプラクティスについては、パスワードハッシュ FAQを参照ください。

説明

md5(string $string, bool $binary = false): string

» RSA Data Security, Inc. の MD5メッセージダイジェストアルゴリズム を用いて string の MD5 ハッシュ値を計算し、 そのハッシュを返します。

パラメータ

string

文字列。

binary

オプションのbinarytrue が指定された場合、 md5 ダイジェストが 16 バイト長のバイナリ形式で返されます。

戻り値

32 文字の 16 進数からなるハッシュを返します。

例1 md5() の例

<?php
$str
= 'apple';

if (
md5($str) === '1f3870be274f6c49b3e31a0c6728957f') {
echo
"Would you like a green or red apple?";
}
?>

参考

  • hash() - ハッシュ値 (メッセージダイジェスト) を生成する
  • password_hash() - パスワードハッシュを作る

add a note

User Contributed Notes 2 notes

up
15
yiminrong at yahoo dot ca
3 years ago
Regarding Ray Paseur's comment, the strings hash to:

0e462097431906509019562988736854
0e830400451993494058024219903391

The odds of getting a hash exactly matching the format /^0+e[0-9]+$/ are not high but are also not negligible.

It should be added as a general warning for all hash functions to always use the triple equals === for comparison.

Actually, the warning should be in the operators section when comparing string values! There are lots of warnings about string comparisons, but nothing specific about the format /^0+e[0-9]+$/.
up
5
Ray.Paseur sometimes uses Gmail
6 years ago
md5('240610708') == md5('QNKCDZO')

This comparison is true because both md5() hashes start '0e' so PHP type juggling understands these strings to be scientific notation. By definition, zero raised to any power is zero.