一对php的加密解密方法

  1. <?php
  2. function system_encrypt($data, $key) {
  3. $str = serialize($data);
  4. $key = md5($key);
  5. $k = md5(rand(0, 100));
  6. $k = substr($k, 0, 16);
  7. $result = '';
  8. for ($i = 0; $i < strlen($str); $i++) {
  9. $result .= substr($str, $i, 1) ^ substr($key, $i % strlen($key), 1);
  10. }
  11. return base64_encode($result . $k);
  12. }
  13. function system_decrypt($str, $key) {
  14. $key = md5($key);
  15. $str = base64_decode($str);
  16. $len = strlen($str);
  17. $str = substr($str, 0, $len - 16);
  18. $result = '';
  19. for ($i = 0; $i < strlen($str); $i++) {
  20. $result .= substr($str, $i, 1) ^ substr($key, $i % strlen($key), 1);
  21. }
  22. $result = @unserialize($result);
  23. return $result ? : null;
  24. }
  25. $key = 'shuai';
  26. $data = ['uid' => 1, 'time' => time()];
  27. // 系统加密
  28. $result = system_encrypt($data, $key);
  29. echo $result . "\n\n";
  30. // 系统解密
  31. $value = system_decrypt($result, $key);
  32. var_dump($value);