PHP using mcrypt and store the encrypted in MySQL

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP using mcrypt and store the encrypted in MySQL相关的知识,希望对你有一定的参考价值。

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\r\n";
echo "Encrypted Text: $encrypted_text\r\n";
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

以上是关于PHP using mcrypt and store the encrypted in MySQL的主要内容,如果未能解决你的问题,请参考以下文章

升级到 El Capitan OS 后 mcrypt 出错

docker import with Docker for Windows using Linux containers no space left on device error with Stor

PHP:OpenSSL 等价于 mcrypt:MCRYPT_3DES?

PHP 不加载 mcrypt 扩展

PHP:Mcrypt - 哪种模式?

`PHP 警告:PHP 启动:无法加载动态库 'mcrypt.so'