Home  >  Article  >  Backend Development  >  php源码分析之DZX1.5加密解密函数authcode用法_PHP教程

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

WBOY
WBOYOriginal
2016-07-13 09:50:04751browse

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

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

  ?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

$authkey = '';

/**

* @param string $string: 输入的需要加密(或解密)的明文(或密文)

* @param string $operation: 'DECODE'或其它,其中默认表示解密,输入其它表示加密

* @param string $key: 加解密密钥

* @param int $expiry: 有效期

*/

function authcode($string, $operation = 'DECODE', $key = '', $expiry = 0) {

global $authkey;

$ckey_length = 4;

$key = md5($key != '' ? $key : $authkey);

$keya = md5(substr($key, 0, 16));

$keyb = md5(substr($key, 16, 16));

$keyc = $ckey_length ? ($operation == 'DECODE' ? substr($string, 0, $ckey_length): substr(md5(microtime()), -$ckey_length)) : '';

$cryptkey = $keya.md5($keya.$keyc);

$key_length = strlen($cryptkey);

$string = $operation == 'DECODE' ? base64_decode(substr($string, $ckey_length)) : sprintf('%010d', $expiry ? $expiry + time() : 0).substr(md5($string.$keyb), 0, 16).$string;

$string_length = strlen($string);

$result = '';

$box = range(0, 255);

$rndkey = array();

for($i = 0; $i

$rndkey[$i] = ord($cryptkey[$i % $key_length]);

}

for($j = $i = 0; $i

$j = ($j + $box[$i] + $rndkey[$i]) % 256;

$tmp = $box[$i];

$box[$i] = $box[$j];

$box[$j] = $tmp;

}

for($a = $j = $i = 0; $i

$a = ($a + 1) % 256;

$j = ($j + $box[$a]) % 256;

$tmp = $box[$a];

$box[$a] = $box[$j];

$box[$j] = $tmp;

$result .= chr(ord($string[$i]) ^ ($box[($box[$a] + $box[$j]) % 256]));

}

if($operation == 'DECODE') {

if((substr($result, 0, 10) == 0 || substr($result, 0, 10) - time() > 0) && substr($result, 10, 16) == substr(md5(substr($result, 26).$keyb), 0, 16)) {

return substr($result, 26);

} else {

return '';

}

} else {

return $keyc.str_replace('=', '', base64_encode($result));

}

}

$str = '1234';

$key = '1234';

echo "明文:".$str;

echo "
";

echo "密钥:".$key;

$encode = authcode($str,'11',$key);

echo "
";

echo "加密后的密文:".$encode;

echo "
";

$decode = authcode($encode,'DECODE',$key);

echo "解密后的明文:".$decode;

/*End of php*/

  运行结果如下:

  明文:1234

  密钥:1234

  加密后的密文:a52f67eXZGVy0HtQBo4vOREhq3WxnL6E2zlx75JGfoJW

  解密后的明文:1234

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

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1018379.htmlTechArticlephp源码分析之DZX1.5加密解密函数authcode用法 本文实例讲述了php源码分析之DZX1.5加密解密函数authcode用法。分享给大家供大家参考。具体分析...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn