Home > php教程 > PHP源码 > body text

PHP aes算法

PHP中文网
Release: 2016-05-25 17:05:47
Original
972 people have browsed it

php代码

function aes128cbcEncrypt($key, $text)
{
    /**
     * Open the cipher
     */
    $td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, '');
    if (! $td)
    {
        throw new GeneralSecurityException('Invalid mcrypt cipher, check your libmcrypt library and php-mcrypt extention');
    } 
    // replaced MCRYPT_DEV_RANDOM with MCRYPT_RAND since windows doesn't have /dev/rand :)
    srand((double)microtime() * 1000000);
    $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
    /**
     * Intialize encryption
     */
    mcrypt_generic_init($td, $key, $iv);
    /**
     * Encrypt data
     */
    $encrypted = mcrypt_generic($td, $text);
    /**
     * Terminate encryption handler
     */
    mcrypt_generic_deinit($td);
    /**
     * AES-128-CBC encryption.  The IV is returned as the first 16 bytes  
     * of the cipher text.
     */
    return $iv . $encrypted;
} 

function aes128cbcDecrypt($key, $encrypted_text)
{
    /**
     * Open the cipher
     */
    $td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, '');
    if (is_callable('mb_substr'))
    {
        $iv = mb_substr($encrypted_text, 0, Crypto_CIPHER_BLOCK_SIZE, 'latin1');
    } 
    else
    {
        $iv = substr($encrypted_text, 0, Crypto_CIPHER_BLOCK_SIZE);
    } 
    /**
     * Initialize encryption module for decryption
     */
    mcrypt_generic_init($td, $key, $iv);
    /**
     * Decrypt encrypted string
     */
    if (is_callable('mb_substr'))
    {
        $encrypted = mb_substr($encrypted_text, Crypto_CIPHER_BLOCK_SIZE, mb_strlen($encrypted_text, 'latin1'), 'latin1');
    } 
    else
    {
        $encrypted = substr($encrypted_text, Crypto_CIPHER_BLOCK_SIZE);
    } 
    $decrypted = mdecrypt_generic($td, $encrypted);
    /**
     * Terminate decryption handle and close module
     */
    mcrypt_generic_deinit($td);
    mcrypt_module_close($td);
    /**
     * Show string
     */
    return trim($decrypted);
} 
define('Crypto_CIPHER_BLOCK_SIZE', 16);
$a = aes128cbcEncrypt('pass', 'this is text');
echo base64_encode($a) . "/r/n";
$b = aes128cbcDecrypt('pass', $a);
echo $b . "/r/n";
$c = aes128cbcDecrypt('pass', base64_decode(base64_encode($a)));
echo $c . "/r/n";
?>
Copy after login
Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Recommendations
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template