## With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

No credit card required

# 14.7. Encrypting and Decrypting Data

## Problem

You want to encrypt and decrypt data using one of a variety of popular algorithms.

## Solution

Use PHP’s `mcrypt` extension:

```\$key  = 'That golden key that opes the palace of eternity.';
\$data = 'The chicken escapes at dawn. Send help with Mr. Blue.';
\$alg  = MCRYPT_BLOWFISH;
\$mode = MCRYPT_MODE_CBC;

\$iv = mcrypt_create_iv(mcrypt_get_iv_size(\$alg,\$mode),MCRYPT_DEV_URANDOM);
\$encrypted_data = mcrypt_encrypt(\$alg, \$key, \$data, \$mode, \$iv);
\$plain_text = base64_encode(\$encrypted_data);

print \$plain_text."\n";
\$decoded = mcrypt_decrypt(\$alg,\$key,base64_decode(\$plain_text),\$mode,\$iv);
print \$decoded."\n";
NNB9WnuCYjyd3Y7vUh7XDfWFCWnQY0BsMehHNmBHbGOdJ3cM+yghABb/XyrJ+w3xz9tms74/a70=
The chicken escapes at dawn. Send help with Mr. Blue.```

## Discussion

The `mcrypt` extension is an interface with `mcrypt`, a library that implements many different encryption algorithms. The data is encrypted and decrypted by `mcrypt_encrypt( )` and `mcrypt_decrypt( )`, respectively. They each take five arguments. The first is the algorithm to use. To find which algorithms `mcrypt` supports on your system, call `mcrypt_list_algorithms( )` . The full list of `mcrypt` algorithms is shown in Table 14-1. The second argument is the encryption key; the third argument is the data to encrypt or decrypt. The fourth argument is the mode for the encryption or decryption (a list of supported modes is returned by `mcrypt_list_modes( )` ). The fifth argument is an initialization vector (IV), used by ...

## With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

No credit card required