Rumah > pembangunan bahagian belakang > tutorial php > php写的Passport解密函数

php写的Passport解密函数

WBOY
Lepaskan: 2016-07-25 09:02:53
asal
927 orang telah melayarinya
  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. ?>
复制代码


Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan