Heim  >  Artikel  >  Backend-Entwicklung  >  php源码分析之DZX1.5加密解密函数authcode用法_PHP教程

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

WBOY
WBOYOriginal
2016-07-13 09:50:04777Durchsuche

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用法。分享给大家供大家参考。具体分析...
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