新版订单消耗系统

AopEncrypt.php 1.6KB

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