Heim  >  Artikel  >  Backend-Entwicklung  >  php写的Passport解密函数

php写的Passport解密函数

WBOY
WBOYOriginal
2016-07-25 09:02:53907Durchsuche
  1. /**

  2. * Passport 解密函数
  3. *
  4. * @param string 加密后的字串
  5. * @param string 私有密匙(用于解密和加密)
  6. *
  7. * @return string 字串经过私有密匙解密后的结果
  8. */
  9. function passport_decrypt($txt, $key) {
  10. // $txt 的结果为加密后的字串经过 base64 解码,然后与私有密匙一起,

  11. // 经过 passport_key() 函数处理后的返回值
  12. $txt = passport_key(base64_decode($txt), $key);
  13. // 变量初始化

  14. $tmp = '';
  15. // for 循环,$i 为从 0 开始,到小于 $txt 字串长度的整数

  16. for ($i = 0; $i // $tmp 字串在末尾增加一位,其内容为 $txt 的第 $i 位,
  17. // 与 $txt 的第 $i + 1 位取异或。然后 $i = $i + 1
  18. $tmp .= $txt[$i] ^ $txt[++$i];
  19. }
  20. // 返回 $tmp 的值作为结果

  21. return $tmp;
  22. }

  23. /**

  24. * Passport 密匙处理函数
  25. *
  26. * @param string 待加密或待解密的字串
  27. * @param string 私有密匙(用于解密和加密)
  28. *
  29. * @return string 处理后的密匙
  30. */
  31. function passport_key($txt, $encrypt_key) {
  32. // 将 $encrypt_key 赋为 $encrypt_key 经 md5() 后的值

  33. $encrypt_key = md5($encrypt_key);
  34. // 变量初始化

  35. $ctr = 0;
  36. $tmp = '';
  37. // for 循环,$i 为从 0 开始,到小于 $txt 字串长度的整数

  38. for($i = 0; $i // 如果 $ctr = $encrypt_key 的长度,则 $ctr 清零
  39. $ctr = $ctr == strlen($encrypt_key) ? 0 : $ctr;
  40. // $tmp 字串在末尾增加一位,其内容为 $txt 的第 $i 位,
  41. // 与 $encrypt_key 的第 $ctr + 1 位取异或。然后 $ctr = $ctr + 1
  42. $tmp .= $txt[$i] ^ $encrypt_key[$ctr++];
  43. }
  44. // 返回 $tmp 的值作为结果

  45. return $tmp;
  46. }
  47. ?>
复制代码


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn