AopEncrypt.php 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. <?php
  2. /**
  3. * Author: 芸众商城 www.yunzshop.com
  4. * Date: 2017/11/14
  5. * Time: 下午6:10
  6. */
  7. /**
  8. * 加密工具类
  9. *
  10. * User: jiehua
  11. * Date: 16/3/30
  12. * Time: 下午3:25
  13. */
  14. /**
  15. * 加密方法
  16. * @param string $str
  17. * @return string
  18. */
  19. function encrypt($str,$screct_key){
  20. //AES, 128 模式加密数据 CBC
  21. $screct_key = base64_decode($screct_key);
  22. $str = trim($str);
  23. $str = addPKCS7Padding($str);
  24. $iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128,MCRYPT_MODE_CBC),1);
  25. $encrypt_str = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $screct_key, $str, MCRYPT_MODE_CBC);
  26. return base64_encode($encrypt_str);
  27. }
  28. /**
  29. * 解密方法
  30. * @param string $str
  31. * @return string
  32. */
  33. function decrypt($str,$screct_key){
  34. //AES, 128 模式加密数据 CBC
  35. $str = base64_decode($str);
  36. $screct_key = base64_decode($screct_key);
  37. $iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128,MCRYPT_MODE_CBC),1);
  38. $encrypt_str = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $screct_key, $str, MCRYPT_MODE_CBC);
  39. $encrypt_str = trim($encrypt_str);
  40. $encrypt_str = stripPKSC7Padding($encrypt_str);
  41. return $encrypt_str;
  42. }
  43. /**
  44. * 填充算法
  45. * @param string $source
  46. * @return string
  47. */
  48. function addPKCS7Padding($source){
  49. $source = trim($source);
  50. $block = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
  51. $pad = $block - (strlen($source) % $block);
  52. if ($pad <= $block) {
  53. $char = chr($pad);
  54. $source .= str_repeat($char, $pad);
  55. }
  56. return $source;
  57. }
  58. /**
  59. * 移去填充算法
  60. * @param string $source
  61. * @return string
  62. */
  63. function stripPKSC7Padding($source){
  64. $source = trim($source);
  65. $char = substr($source, -1);
  66. $num = ord($char);
  67. if($num==62)return $source;
  68. $source = substr($source,0,-$num);
  69. return $source;
  70. }