What is md5() in PHP?
The md5() function computes the MD5 hash of a string and returns it as a 32-character hexadecimal number. The MD5 algorithm is widely used to verify data integrity because it produces a fixed-length string regardless of the input size.
Syntax:
md5(string, raw_output)
- string: The input string to be hashed.
- raw_output (optional): A boolean parameter that determines the output format. If set to
TRUE, it returns raw binary data; otherwise, the default is FALSE, returning a 32-character hexadecimal number.
Example 1: Basic Usage of md5() in PHP
<?php
$string = "Hello, World!";
$hashed_string = md5($string);
echo $hashed_string;
?>
Output:
fc3ff98e8c6a0d3087d515c0473f8677
Example 2: Using md5() with raw output
By default, the md5() function returns a hexadecimal string. However, you can also retrieve the raw binary format by setting the second parameter to TRUE.
<?php
$string = "Hello, World!";
$hashed_string = md5($string, true);
echo bin2hex($hashed_string); // Converts binary data to hex representation
?>
Output:
fc3ff98e8c6a0d3087d515c0473f8677
Practical Uses of md5() in PHP
-
Password Hashing (Not Recommended for Modern Security Practices):
Although MD5 was once widely used for password hashing, it is now considered insecure due to vulnerabilities. For modern applications, it is recommended to use password_hash() instead.
Example:
$password = "securepassword";
$password_hash = md5($password); // Use this cautiously, prefer password_hash()
-
File Integrity Check:
You can use md5() to check the integrity of files by comparing the MD5 hash of the original file with that of the uploaded file.
<?php
$original_file = file_get_contents("path_to_file.txt");
$original_file_hash = md5($original_file);
$uploaded_file = file_get_contents("path_to_uploaded_file.txt");
$uploaded_file_hash = md5($uploaded_file);
if($original_file_hash === $uploaded_file_hash) {
echo "File is intact.";
} else {
echo "File has been tampered with.";
}
?>
Key Points:
- MD5 generates a 128-bit hash (32 characters in hexadecimal).
- MD5 is not collision-resistant, meaning different inputs can sometimes produce the same hash.
- For secure password hashing, use
password_hash() instead of md5().
- MD5 is commonly used for checksums, data integrity checks, and file verification.