Current Location: Home> Latest Articles> Detailed explanation of the basic usage of PHP crypt() function

Detailed explanation of the basic usage of PHP crypt() function

M66 2025-05-20

When developing web, password encryption is a key link in protecting user data security. PHP provides a variety of encryption methods, where the crypt() function is a basic but very useful encryption tool. It can encrypt strings in one-way and is often used for password hashing. This article will introduce in detail the use of crypt() function, basic syntax, different encryption algorithms, as well as examples and precautions in practical applications.

1. What is the crypt() function?

crypt() is a built-in encryption function in PHP, used to encrypt strings. It uses a one-way encryption algorithm, which means that the encryption result is irreversible, which is very suitable for storing sensitive data such as passwords.

While PHP also provides modern encryption methods such as password_hash() and hash() , understanding how crypt() works still helps developers master the basics of encryption.

2. Syntax of crypt() function

 string crypt ( string $string [, string $salt ] )
  • $string : The original string that needs to be encrypted.

  • $salt : Optional parameter, specifying the "salt value" used for encryption. Different salt values ​​and algorithms will affect the final encryption result.

3. Encryption algorithm type

The crypt() function supports multiple encryption algorithms, depending on the salt value format you provide. The following are some commonly used salt value formats and their corresponding algorithms:

  1. DES (default)

     crypt('mypassword', 'rl');
    
  2. MD5

     crypt('mypassword', '$1$usesomesalt$');
    
  3. Blowfish

     crypt('mypassword', '$2y$10$abcdefghijklmnopqrstuv');
    
  4. SHA-256

     crypt('mypassword', '$5$rounds=5000$anexamplestringforsalt$');
    
  5. SHA-512

     crypt('mypassword', '$6$rounds=5000$anexamplestringforsalt$');
    

4. Example: Use Blowfish to encrypt passwords

 <?php
$password = 'secure123';
$salt = '$2y$10$usesomesillystringforex$';
$hashed = crypt($password, $salt);

echo $hashed;
?>

The output result is a string of encrypted strings. Even if executed again, the result is the same, which is suitable for password comparison when the user logs in and verifys.

5. How to verify password?

When verifying the password, you need to re-encrypt the password entered by the user with the same salt value, and then compare it with the hash value stored in the database:

 <?php
$input_password = 'secure123';
$stored_hash = '$2y$10$usesomesillystringforex$JeW8SuJSvSpEtBCUJ8JXoeK1G5Lmbl9Hz7tpIdAd4wczP8t9UO1nO';

if (crypt($input_password, $stored_hash) === $stored_hash) {
    echo 'Password verification succeeded';
} else {
    echo 'Error password';
}
?>

6. Things to note

  • When using crypt() , it is recommended to choose Blowfish or higher security algorithms.

  • crypt() will not automatically generate salt values, and developers need to pass them in manually.

  • PHP 5.3 has improved the support for algorithms, but it is recommended to use password_hash() instead of crypt() in later versions.

7. Combined with actual conditions: used for user registration

When a user registers, an encrypted password can be generated and stored in the database:

 <?php
$password = 'mypassword';
$salt = '$2y$10$' . substr(strtr(base64_encode(random_bytes(16)), '+', '.'), 0, 22);
$hash = crypt($password, $salt);

// Will $hash Save to the database
echo 'Registered successfully,The encryption password is:' . $hash;
?>

8. Summary

crypt() is a powerful encryption function provided by PHP. By providing different salt value formats, multiple encryption algorithms can be used to encrypt strings. Although it is recommended to use functions such as password_hash() to deal with password security in modern development, understanding the mechanism of crypt() can help lay a good foundation for security development.

crypt() still plays an important role when you need to have a custom algorithm or be compatible with old projects. Whether it is building a login system, storing sensitive data or processing authentication mechanisms, the rational use of encryption functions is always an indispensable part of ensuring website security.