当前位置:Gxlcms > PHP教程 > php的AES加密算法完整实例代码

php的AES加密算法完整实例代码

时间:2021-07-01 10:21:17 帮助过:17人阅读

高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院(NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一。这篇文章主要介绍了PHP的AES加密算法,结合完整实例形式分析了php的AES加密算法类及其具体用法,具有一定参考借鉴价值,需要的朋友可以参考下

  1. <?php
  2. class MCrypt {
  3. private $hex_iv = '00000000000000000000000000000000'; # converted JAVA byte code in to HEX and placed it here
  4. private $key = 'U1MjU1M0FDOUZ.Qz'; #Same as in JAVA
  5. function construct() {
  6. $this->key = hash('sha256', $this->key, true);
  7. //echo $this->key.'<br/>';
  8. }
  9. function encrypt($str) {
  10. $td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, '');
  11. mcrypt_generic_init($td, $this->key, $this->hexToStr($this->hex_iv));
  12. $block = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
  13. $pad = $block - (strlen($str) % $block);
  14. $str .= str_repeat(chr($pad), $pad);
  15. $encrypted = mcrypt_generic($td, $str);
  16. mcrypt_generic_deinit($td);
  17. mcrypt_module_close($td);
  18. return base64_encode($encrypted);
  19. }
  20. function decrypt($code) {
  21. $td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, '');
  22. mcrypt_generic_init($td, $this->key, $this->hexToStr($this->hex_iv));
  23. $str = mdecrypt_generic($td, base64_decode($code));
  24. $block = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
  25. mcrypt_generic_deinit($td);
  26. mcrypt_module_close($td);
  27. return $this->strippadding($str);
  28. }
  29. /*
  30. For PKCS7 padding
  31. */
  32. private function addpadding($string, $blocksize = 16) {
  33. $len = strlen($string);
  34. $pad = $blocksize - ($len % $blocksize);
  35. $string .= str_repeat(chr($pad), $pad);
  36. return $string;
  37. }
  38. private function strippadding($string) {
  39. $slast = ord(substr($string, -1));
  40. $slastc = chr($slast);
  41. $pcheck = substr($string, -$slast);
  42. if (preg_match("/$slastc{" . $slast . "}/", $string)) {
  43. $string = substr($string, 0, strlen($string) - $slast);
  44. return $string;
  45. } else {
  46. return false;
  47. }
  48. }
  49. function hexToStr($hex)
  50. {
  51. $string='';
  52. for ($i=0; $i < strlen($hex)-1; $i+=2)
  53. {
  54. $string .= chr(hexdec($hex[$i].$hex[$i+1]));
  55. }
  56. return $string;
  57. }
  58. }
  59. $encryption = new MCrypt();
  60. echo $encryption->encrypt('123456') . "<br/>";
  61. echo $encryption->decrypt('tpyxISJ83dqEs3uw8bN/+w==');
  62. ?>

以上就是php 的AES加密算法完整实例代码的详细内容,更多请关注Gxl网其它相关文章!

人气教程排行