AopEncrypt.php 1.9 KB

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