이러한 방식으로 이 기능을 Single Sign-On 토큰 암호화 전송, 임시 비밀번호 등 다양한 목적으로 사용할 수 있습니다.
코드 복사 코드 다음과 같습니다:
/**
* @param string $string 원본 텍스트 또는 암호 텍스트
* @param string $Operation 연산(ENCODE | DECODE), 기본값은 DECODE
* @param string $key key
* @param int $expiry 암호문 유효 기간, 암호화 중에 유효, 단위는 초, 0은 영구적으로 유효함
* @return 문자열은 원본 텍스트 또는 base64_encoded 암호문을 처리함
*
* @example
*
* $ a = authcode('abc', 'ENCODE', 'key');
* $b = authcode($a, 'DECODE', 'key') // $b(abc)
*
* $a = authcode('abc', 'ENCODE', 'key', 3600)
* $b = authcode('abc', 'DECODE', 'key') // 1시간 이내 , $b(abc), 그렇지 않으면 $b가 비어 있습니다
*/
function authcode($string, $eration = 'DECODE', $key = '', $expiry = 3600) {
$ckey_length = 4;
// 임의의 키 길이 범위는 0-32입니다.
// 임의의 키를 추가하면 원본 텍스트와 키가 완전히 동일하더라도 암호문이 불규칙해질 수 있습니다. 암호화 결과는 매번 달라지므로 크래킹 난이도가 높아집니다.
// 값이 클수록 암호문 변경 패턴이 커집니다. 암호문 변경 = 16의 $ckey_length
// 이 값이 0이면 임의 키가 생성되지 않습니다.
$key = md5($key ? $key : EABAX::getAppInf('KEY'));
$keya = md5(substr($key, 0, 16))
$keyb = md5(substr($) 키, 16, 16));
$keyc = $ckey_length ? ($eration == 'DECODE' ? substr($string, 0, $ckey_length): substr(md5(microtime()), -$ckey_length) ) : '';$cryptkey = $keya.md5($keya.$keyc);
$key_length = strlen($cryptkey)
$string == '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()
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; ;
$box[$i] = $box[$j]
$box[$j] = $tmp
}
for($a = $j = $i = 0 ; $i < $string_length; $i ) {
$a = ($a 1) % 256
$j = ($j $box[$a])
$ tmp = $box[$a];
$box[$a] = $box[$j]
$box[$j] = $tmp
$result(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))
}
}
위 내용은 js로 문자열을 가로채서 지정된 시간 내에 문자열을 암호화하고 복원하는 PHP 문자열 암호화 기능을 소개한 내용인데, js로 문자열을 가로채는 내용도 포함해서 시간 초과 후에는 복원할 수 없습니다. PHP 튜토리얼에 관심이 있습니다.