首页 > 开发 > PHP > 正文

php源码分析之DZX1.5加密解密函数authcode用法

2024-05-04 23:36:21
字体:
来源:转载
供稿:网友

这篇文章主要介绍了php源码分析之DZX1.5加密解密函数authcode用法,实例分析了DZX1.5中authcode函数加密与解密的使用技巧,需要的朋友可以参考下

本文实例讲述了php源码分析之DZX1.5加密解密函数authcode用法。分享给大家供大家参考。具体分析如下:

 

 
  1. <?php 
  2. $authkey = ''
  3. /** 
  4. * @param string $string: 输入的需要加密(或解密)的明文(或密文) 
  5. * @param string $operation: 'DECODE'或其它,其中默认表示解密,输入其它表示加密 
  6. * @param string $key: 加解密密钥 
  7. * @param int $expiry: 有效期 
  8. */ 
  9. function authcode($string$operation = 'DECODE'$key = ''$expiry = 0) { 
  10. global $authkey
  11. $ckey_length = 4; 
  12. $key = md5($key != '' ? $key : $authkey); 
  13. $keya = md5(substr($key, 0, 16)); 
  14. $keyb = md5(substr($key, 16, 16)); 
  15. $keyc = $ckey_length ? ($operation == 'DECODE' ? substr($string, 0, $ckey_length): substr(md5(microtime()), -$ckey_length)) : ''
  16. $cryptkey = $keya.md5($keya.$keyc); 
  17. $key_length = strlen($cryptkey); 
  18. $string = $operation == 'DECODE' ? base64_decode(substr($string$ckey_length)) : sprintf('%010d'$expiry ? $expiry + time() : 0).substr(md5($string.$keyb), 0, 16).$string
  19. $string_length = strlen($string); 
  20. $result = ''
  21. $box = range(0, 255); 
  22. $rndkey = array(); 
  23. for($i = 0; $i <= 255; $i++) { 
  24. $rndkey[$i] = ord($cryptkey[$i % $key_length]); 
  25. for($j = $i = 0; $i < 256; $i++) { 
  26. $j = ($j + $box[$i] + $rndkey[$i]) % 256; 
  27. $tmp = $box[$i]; 
  28. $box[$i] = $box[$j]; 
  29. $box[$j] = $tmp
  30. for($a = $j = $i = 0; $i < $string_length$i++) { 
  31. $a = ($a + 1) % 256; 
  32. $j = ($j + $box[$a]) % 256; 
  33. $tmp = $box[$a]; 
  34. $box[$a] = $box[$j]; 
  35. $box[$j] = $tmp
  36. $result .= chr(ord($string[$i]) ^ ($box[($box[$a] + $box[$j]) % 256])); 
  37. if($operation == 'DECODE') { 
  38. if((substr($result, 0, 10) == 0 || substr($result, 0, 10) - time() > 0) && substr($result, 10, 16) == substr(md5(substr($result, 26).$keyb), 0, 16)) { 
  39. return substr($result, 26); 
  40. else { 
  41. return ''
  42. else { 
  43. return $keyc.str_replace('='''base64_encode($result)); 
  44. $str = '1234'
  45. $key = '1234'
  46. echo "明文:".$str
  47. echo "<br />"
  48. echo "密钥:".$key
  49. $encode = authcode($str,'11',$key); 
  50. echo "<br />"
  51. echo "加密后的密文:".$encode
  52. echo "<br />"
  53. $decode = authcode($encode,'DECODE',$key); 
  54. echo "解密后的明文:".$decode
  55. /*End of php*/ 

运行结果如下:

明文:1234

密钥:1234

加密后的密文:a52f67eXZGVy0HtQBo4vOREhq3WxnL6E2zlx75JGfoJW

解密后的明文:1234

希望本文所述对大家的php程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表