Classic PHP encryption and decryption function Authcode() repair version code_PHP tutorial

WBOY
Release: 2016-07-13 09:57:58
Original
790 people have browsed it

Repair code of the classic PHP encryption and decryption function Authcode()

Authcode is a function that many people use. This function comes from the Discuz program and is used to encrypt and decrypt strings. You can set the key (key) and expiration time are useful in many cases. The original function code may generate characters such as , /, &, which will cause them to be escaped when the value is returned through the URL, making it impossible to decrypt. Fireend Network made a slight modification, replaced these characters with other characters, and then replaced them back during decryption, so it was perfect!

The code is as follows:

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

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

 

if($operation == 'DECODE') {

$string = str_replace('[a]',' ',$string);

$string = str_replace('[b]','&',$string);

$string = str_replace('[c]','/',$string);

}

$ckey_length = 4;

$key = md5($key ? $key : 'livcmsencryption ');

$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('0d', $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 <= 255; $i ) {

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

}

for($j = $i = 0; $i < 256; $i ) {

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

$tmp = $box[$i];

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

$box[$j] = $tmp;

}

for($a = $j = $i = 0; $i < $string_length; $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 {

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

$ustr = str_replace(' ','[a]',$ustr);

$ustr = str_replace('&','[b]',$ustr);

$ustr = str_replace('/','[c]',$ustr);

return $ustr;

}

}

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
function authcode($string, $operation = 'DECODE', $key = '', $expiry = 0){ if($operation == 'DECODE') { $string = str_replace('[a]',' ',$string); $string = str_replace('[b]','&',$string); $string = str_replace('[c]','/',$string); } $ckey_length = 4; $key = md5($key ? $key : 'livcmsencryption '); $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(' 0d', $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 <= 255; $i ) {<🎜> <🎜>$rndkey[$i] = ord($cryptkey[$i % $key_length]);<🎜> <🎜>}<🎜> <🎜>for($j = $i = 0; $i < 256; $i ) {<🎜> <🎜>$j = ($j $box[$i] $rndkey[$i]) % 256;<🎜> <🎜>$tmp = $box[$i];<🎜> <🎜>$box[$i] = $box[$j];<🎜> <🎜>$box[$j] = $tmp;<🎜> <🎜>}<🎜> <🎜>for($a = $j = $i = 0; $i < $string_length; $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 { $ustr = $keyc.str_replace('=', '', base64_encode($result)); $ustr = str_replace(' ','[a]',$ustr); $ustr = str_replace('&','[b]',$ustr); $ustr = str_replace('/','[c]',$ustr); return $ustr; } }

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/979237.htmlTechArticleClassic PHP encryption and decryption function Authcode() repair version code Authcode This function is used by many people. This function comes from the Discuz program , used to encrypt and decrypt strings, you can set the key and...
source:php.cn
Statement of this Website
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!