This is how I would do it. Create a class to do encryption/decryption:
class cipher { private $securekey; private $iv_size; function __construct($textkey) { $this->iv_size = mcrypt_get_iv_size( MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC ); $this->securekey = hash( 'sha256', $textkey, TRUE ); } function encrypt($input) { $iv = mcrypt_create_iv($this->iv_size); return base64_encode( $iv . mcrypt_encrypt( MCRYPT_RIJNDAEL_128, $this->securekey, $input, MCRYPT_MODE_CBC, $iv ) ); } function decrypt($input) { $input = base64_decode($input); $iv = substr( $input, 0, $this->iv_size ); $cipher = substr( $input, $this->iv_size ); return trim( mcrypt_decrypt( MCRYPT_RIJNDAEL_128, $this->securekey, $cipher, MCRYPT_MODE_CBC, $iv ) ); } }
Then use it like this:
// Usage $cipher = new cipher('my-secret-key'); $orignal_text = 'my secret message'; $encrypted_text = $cipher->encrypt($orignal_text); // store this in db $decrypted_text = $cipher->decrypt($encrypted_text); // load $encrypted_text from db // Debug echo "Orignal Text : $orignal_text "; echo "Encrypted Text: $encrypted_text "; echo "Decrypted Text: $decrypted_text";
This respectively outputs the following:
Orignal Text : my secret message Encrypted Text: Z21ifr5dHEdE9nO8vaDWb9QkjooqCK4UI6D/Ui+fkpmXWwmxloy8hM+7oimtw1wE Decrypted Text: my secret message
来源:http://stackoverflow.com/questions/26756322/php-using-mcrypt-and-store-the-encrypted-in-mysql