Home > Backend Development > PHP Tutorial > PHP string encryption function (encrypt and restore string within specified time, cannot be restored after timeout)_PHP tutorial

PHP string encryption function (encrypt and restore string within specified time, cannot be restored after timeout)_PHP tutorial

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Release: 2016-07-21 15:38:54
Original
904 people have browsed it

In this way, we can use this function for many purposes, such as: single sign-on token encrypted transmission, temporary password, etc.

Copy code Code As follows:

/**
* @param string $string original text or cipher text
* @param string $operation operation (ENCODE | DECODE), the default is DECODE
* @param string $key key
* @param int $expiry Ciphertext validity period, valid during encryption, in seconds, 0 is permanently valid
* @return string processed original text or base64_encoded ciphertext
*
* @example
*
* $a = authcode('abc', 'ENCODE', 'key');
* $b = authcode($a, 'DECODE', 'key'); // $b(abc)
*
* $a = authcode('abc', 'ENCODE', 'key', 3600);
* $b = authcode('abc', 'DECODE', 'key'); // Within one hour, $b(abc), otherwise $b is empty
*/
function authcode($string, $operation = 'DECODE', $key = '', $expiry = 3600) {
$ckey_length = 4;
// The random key length ranges from 0-32;
// Adding a random key can make the ciphertext irregular. Even if the original text and the key are exactly the same, the encryption result will be It will be different every time, increasing the difficulty of cracking.
// The larger the value, the greater the ciphertext change pattern. The ciphertext change = 16 to the power of $ckey_length
// When this value is 0, no random key will be generated
$key = md5($key ? $key : EABAX::getAppInf('KEY'));
$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 <= 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 {
return $keyc.str_replace('=', '', base64_encode($result));
}
}

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/321662.htmlTechArticleIn this way, we can use this function for many purposes, such as: single sign-on token encrypted transmission, Temporary password, etc. Copy the code as follows: /** * @param string $string original...
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
Latest Issues
php data acquisition?
From 1970-01-01 08:00:00
0
0
0
PHP extension intl
From 1970-01-01 08:00:00
0
0
0
How to learn php well
From 1970-01-01 08:00:00
0
0
0
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template