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
5 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.
To Top