zoukankan      html  css  js  c++  java
  • 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
    ";
    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

  • 相关阅读:
    java中数据库通用层
    java中dao层的通用层,通过反射机制,操作数据库的增删改,适用的范围是不包含属性类
    反射,类,构造方法,方法,属性
    如何求组合数(逆元)
    Go Home
    Dubious Document
    Factors of Factorial
    Lining Up
    AtCoDeer and Rock-Paper
    Boxes and Candies
  • 原文地址:https://www.cnblogs.com/wish123/p/5924139.html
Copyright © 2011-2022 走看看