PHP: crypt() function


The crypt() is used to encrypts a string using DES, Blowfish, and MD5 (if available) algorithms.


(PHP 4 and above)


crypt(string1, salt)


Name Description Required /
string1 The string to be encrypted. Required String
salt An optional salt string to base the hashing on. If not provided, the behavior is defined by the algorithm implementation and can lead to unexpected results. Optional String

Return value:

The encrypted string.

Value Type: string


echo "Standard DES: ".crypt("Thank you")."\n<br />";
echo "Extended DES: ".crypt("Thank you")."\n<br />";
echo "MD5: ".crypt("Thank you")."\n<br />";
echo "Blowfish: ".crypt("Thank you");


Standard DES: $1$cx1./y3.$H.8Trcy6pLgimqOWmGYrh/
Extended DES: $1$aU0.bl3.$h0A8HqJMF8gA3KwoZa6vq0
MD5: $1$Ic4.x85.$VmsInH4NRIb9WS5ofMGi80
Blowfish: $1$m00.1U3.$8BdJ6KtYIhRSMSJVqQpN71

View the example in the browser

See also

PHP Function Reference

Previous: crc32
Next: explode

PHP: Tips of the Day

PHP - How do I implement a callback in PHP?

The manual uses the terms "callback" and "callable" interchangeably, however, "callback" traditionally refers to a string or array value that acts like a function pointer, referencing a function or class method for future invocation. This has allowed some elements of functional programming since PHP 4. The flavors are:

$cb1 = 'someGlobalFunction';
$cb2 = ['ClassName', 'someStaticMethod'];
$cb3 = [$object, 'somePublicMethod'];

// this syntax is callable since PHP 5.2.3 but a string containing it
// cannot be called directly
$cb2 = 'ClassName::someStaticMethod';
$cb2(); // fatal error

// legacy syntax for PHP 4
$cb3 = array(&$object, 'somePublicMethod');

This is a safe way to use callable values in general:

if (is_callable($cb2)) {
    // Autoloading will be invoked to load the class "ClassName" if it's not
    // yet defined, and PHP will check that the class has a method
    // "someStaticMethod". Note that is_callable() will NOT verify that the
    // method can safely be executed in static context.

    $returnValue = call_user_func($cb2, $arg1, $arg2);

Modern PHP versions allow the first three formats above to be invoked directly as $cb(). call_user_func and call_user_func_array support all the above.


  1. If the function/class is namespaced, the string must contain the fully-qualified name. E.g. ['Vendor\Package\Foo', 'method']
  2. call_user_func does not support passing non-objects by reference, so you can either use call_user_func_array or, in later PHP versions, save the callback to a var and use the direct syntax: $cb();
  3. Objects with an __invoke() method (including anonymous functions) fall under the category "callable" and can be used the same way, but I personally don't associate these with the legacy "callback" term.
  4. The legacy create_function() creates a global function and returns its name. It's a wrapper for eval() and anonymous functions should be used instead.

Ref : https://bit.ly/2Zmqil0