Advanced Encryption Standard (anglais : Advanced Encryption Standard, abréviation : AES), également connue sous le nom de méthode de cryptage Rijndael en cryptographie, est une norme de cryptage par blocs adoptée par le gouvernement fédéral américain. Cette norme est utilisée pour remplacer le DES original. Elle a été analysée par de nombreuses parties et est largement utilisée dans le monde. Après un processus de sélection de cinq ans, l'Advanced Encryption Standard a été publiée par le National Institute of Standards and Technology (NIST) dans la publication FIPS PUB 197 le 26 novembre 2001 et est devenue une norme en vigueur le 26 mai 2002. En 2006, Advanced Encryption Standard est devenu l’un des algorithmes les plus populaires pour le chiffrement à clé symétrique. Cet article présente principalement l'algorithme de cryptage AES de PHP et analyse la classe d'algorithme de cryptage AES de PHP et son utilisation spécifique sous la forme d'un exemple complet. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer
<?php class MCrypt { private $hex_iv = '00000000000000000000000000000000'; # converted JAVA byte code in to HEX and placed it here private $key = 'U1MjU1M0FDOUZ.Qz'; #Same as in JAVA function construct() { $this->key = hash('sha256', $this->key, true); //echo $this->key.'<br/>'; } function encrypt($str) { $td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, ''); mcrypt_generic_init($td, $this->key, $this->hexToStr($this->hex_iv)); $block = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC); $pad = $block - (strlen($str) % $block); $str .= str_repeat(chr($pad), $pad); $encrypted = mcrypt_generic($td, $str); mcrypt_generic_deinit($td); mcrypt_module_close($td); return base64_encode($encrypted); } function decrypt($code) { $td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, ''); mcrypt_generic_init($td, $this->key, $this->hexToStr($this->hex_iv)); $str = mdecrypt_generic($td, base64_decode($code)); $block = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC); mcrypt_generic_deinit($td); mcrypt_module_close($td); return $this->strippadding($str); } /* For PKCS7 padding */ private function addpadding($string, $blocksize = 16) { $len = strlen($string); $pad = $blocksize - ($len % $blocksize); $string .= str_repeat(chr($pad), $pad); return $string; } private function strippadding($string) { $slast = ord(substr($string, -1)); $slastc = chr($slast); $pcheck = substr($string, -$slast); if (preg_match("/$slastc{" . $slast . "}/", $string)) { $string = substr($string, 0, strlen($string) - $slast); return $string; } else { return false; } } function hexToStr($hex) { $string=''; for ($i=0; $i < strlen($hex)-1; $i+=2) { $string .= chr(hexdec($hex[$i].$hex[$i+1])); } return $string; } } $encryption = new MCrypt(); echo $encryption->encrypt('123456') . "<br/>"; echo $encryption->decrypt('tpyxISJ83dqEs3uw8bN/+w=='); ?>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!