PHP aes算法

WBOY
Freigeben: 2016-07-25 08:51:08
Original
1143 Leute haben es durchsucht
PHP aes算法
                   
                               
                                       
                                       
            
  1. function aes128cbcEncrypt($key, $text)
  2. {
  3.     /**
  4.      * Open the cipher
  5.      */
  6.     $td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, '');
  7.     if (! $td)
  8.     {
  9.         throw new GeneralSecurityException('Invalid mcrypt cipher, check your libmcrypt library and php-mcrypt extention');
  10.     }
  11.     // replaced MCRYPT_DEV_RANDOM with MCRYPT_RAND since windows doesn't have /dev/rand :)
  12.     srand((double)microtime() * 1000000);
  13.     $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
  14.     /**
  15.      * Intialize encryption
  16.      */
  17.     mcrypt_generic_init($td, $key, $iv);
  18.     /**
  19.      * Encrypt data
  20.      */
  21.     $encrypted = mcrypt_generic($td, $text);
  22.     /**
  23.      * Terminate encryption handler
  24.      */
  25.     mcrypt_generic_deinit($td);
  26.     /**
  27.      * AES-128-CBC encryption.  The IV is returned as the first 16 bytes  
  28.      * of the cipher text.
  29.      */
  30.     return $iv . $encrypted;
  31. }
  32. function aes128cbcDecrypt($key, $encrypted_text)
  33. {
  34.     /**
  35.      * Open the cipher
  36.      */
  37.     $td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, '');
  38.     if (is_callable('mb_substr'))
  39.     {
  40.         $iv = mb_substr($encrypted_text, 0, Crypto_CIPHER_BLOCK_SIZE, 'latin1');
  41.     }
  42.     else
  43.     {
  44.         $iv = substr($encrypted_text, 0, Crypto_CIPHER_BLOCK_SIZE);
  45.     }
  46.     /**
  47.      * Initialize encryption module for decryption
  48.      */
  49.     mcrypt_generic_init($td, $key, $iv);
  50.     /**
  51.      * Decrypt encrypted string
  52.      */
  53.     if (is_callable('mb_substr'))
  54.     {
  55.         $encrypted = mb_substr($encrypted_text, Crypto_CIPHER_BLOCK_SIZE, mb_strlen($encrypted_text, 'latin1'), 'latin1');
  56.     }
  57.     else
  58.     {
  59.         $encrypted = substr($encrypted_text, Crypto_CIPHER_BLOCK_SIZE);
  60.     }
  61.     $decrypted = mdecrypt_generic($td, $encrypted);
  62.     /**
  63.      * Terminate decryption handle and close module
  64.      */
  65.     mcrypt_generic_deinit($td);
  66.     mcrypt_module_close($td);
  67.     /**
  68.      * Show string
  69.      */
  70.     return trim($decrypted);
  71. }
  72. define('Crypto_CIPHER_BLOCK_SIZE', 16);
  73. $a = aes128cbcEncrypt('pass', 'this is text');
  74. echo base64_encode($a) . "/r/n";
  75. $b = aes128cbcDecrypt('pass', $a);
  76. echo $b . "/r/n";
  77. $c = aes128cbcDecrypt('pass', base64_decode(base64_encode($a)));
  78. echo $c . "/r/n";
  79. ?>
复制代码


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage