때때로 프로젝트에서 암호화해야 할 데이터가 발생하는데, 직접 복호화해야 하기 때문에 일부 대칭 암호화 알고리즘만 찾은 다음 보고 싶을 때 복호화할 수 있습니다. 이 기사에서는 PHP에서 간단한 대칭 암호화 알고리즘을 구현하는 방법을 소개합니다. 이것이 모든 사람에게 도움이 되기를 바랍니다.
머리말
PHP 구문 환경에서 인터넷에서 PHP에 대한 좋은 대칭 암호화 알고리즘을 찾았습니다. urlencode 및 urldecode, base64_encode 및 base64_decode와 함께 제공되는 대칭 알고리즘이 있지만 이러한 내장 알고리즘은 암호화 알고리즘이라고 부를 수 없으며 인코딩 방법이라고만 부를 수 있습니다. 그러나 이를 사용하여 간단한 암호화 및 암호 해독 알고리즘을 구현하기 위한 일부 처리를 수행할 수 있습니다.
이번에는 base64를 사용하여 암호화 및 복호화 알고리즘을 적용했습니다. 일반적으로 base64_encode($str)
에 의해 생성된 문자열을 사용합니다. 아무런 처리 없이 base64_decode()
는 이전 문자열로 다시 변환할 수 있습니다. base64_encode()
이후에 문자열로 변환하면 다시 변환할 수 없습니다. base64_encode($str)
产生的字符串,不经过任何的加工的话,base64_decode()
就能转回我们之前的字符串;可是如果我们在base64_encode()
之后的字符串里插入几个字符呢,那他就转不回来了,即使转过来也不是我们自己的字符串。
示例代码如下:
<?php $content = "大家好,我是中国人,你是谁"; /** * 简单对称加密算法之加密 * @param String $string 需要加密的字串 * @param String $skey 加密EKY * @return String */ function encode($string = '', $skey = 'wenzi') { $strArr = str_split(base64_encode($string)); $strCount = count($strArr); foreach (str_split($skey) as $key => $value) $key < $strCount && $strArr[$key].=$value; return str_replace(array('=', '+', '/'), array('O0O0O', 'o000o', 'oo00o'), join('', $strArr)); } /** * 简单对称加密算法之解密 * @param String $string 需要解密的字串 * @param String $skey 解密KEY * @return String */ function decode($string = '', $skey = 'wenzi') { $strArr = str_split(str_replace(array('O0O0O', 'o000o', 'oo00o'), array('=', '+', '/'), $string), 2); $strCount = count($strArr); foreach (str_split($skey) as $key => $value) $key <= $strCount && $strArr[$key][1] === $value && $strArr[$key] = $strArr[$key][0]; return base64_decode(join('', $strArr)); } echo '<pre class="brush:php;toolbar:false">'; echo "string : " . $content . " <br />"; echo "encode : " . ($enstring = encode($content)) . '<br />'; echo "decode : " . decode($enstring); exit();
上面的算法里我们可以看到:我们把base64_encode()
샘플 코드는 다음과 같습니다.
rrreee
위 알고리즘에서 알 수 있는 것은 base64_encode()
에 의해 생성된 문자를 미리 설정한 키에 삽입한 다음 내부의 특수 문자는 대체됩니다. 다른 사람들이 이러한 문자열을 보더라도 그것이 무엇인지 알 수 없습니다. 물론 여기서는 문자열에 키를 거꾸로 삽입하거나, 키를 base64로 삽입한 다음 삽입하는 등 약간의 개선을 이룰 수 있습니다. 키를 삽입한 후 다시 base64로 삽입합니다.
물론 복호화는 암호화의 반대 방향입니다. 잠시 생각한 끝에 복호화의 원리를 깨달았습니다. 문자열에 일부 문자를 삽입하기 전에 이제 복호화할 때 문자를 추출해야 합니다. 암호화된 문자열은 각 배열의 2개 요소로 그룹화한 다음 두 번째 문자가 키에 있는지 확인합니다. 그렇다면 첫 번째 문자는 원래 base64의 문자입니다. H 관련 권장 사항: pPhp 암호화 해독
위 내용은 PHP는 간단한 대칭 암호화를 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!