>  기사  >  백엔드 개발  >  PHP로 간단한 대칭 암호화 알고리즘 구현

PHP로 간단한 대칭 암호화 알고리즘 구현

高洛峰
高洛峰원래의
2017-01-07 16:37:251098검색

머리말

PHP 구문 환경에서 인터넷의 PHP용 대칭 암호화 알고리즘을 찾았습니다. urlencode 및 urldecode, base64_encode 및 base64_decode와 함께 제공되는 대칭 알고리즘이 있지만 이러한 알고리즘은 암호화 알고리즘이라고 부를 수 없으며 인코딩 방법이라고만 부를 수 있습니다. 그러나 이를 사용하여 간단한 암호화 및 암호 해독 알고리즘을 구현하기 위한 일부 처리를 수행할 수 있습니다.

이번에는 base64를 사용하여 암호화 및 복호화 알고리즘을 적용했습니다. 일반적으로 base64_encode($str)에 의해 생성된 문자열을 사용합니다. base64_decode()는 이전 문자열로 다시 변환할 수 있지만 base64_encode() 뒤에 문자열에 몇 개의 문자를 삽입하면 어떻게 될까요? 뒤로, 뒤집어도 우리만의 끈이 아닙니다.

샘플 코드는 다음과 같습니다.

<?php
$content = "大家好,我是中国人,你是谁";
 
/**
* 简单对称加密算法之加密
* @param String $string 需要加密的字串
* @param String $skey 加密EKY
* @return String
*/
function encode($string = &#39;&#39;, $skey = &#39;wenzi&#39;) {
$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(&#39;=&#39;, &#39;+&#39;, &#39;/&#39;), array(&#39;O0O0O&#39;, &#39;o000o&#39;, &#39;oo00o&#39;), join(&#39;&#39;, $strArr));
}
 
/**
* 简单对称加密算法之解密
* @param String $string 需要解密的字串
* @param String $skey 解密KEY
* @return String
*/
function decode($string = &#39;&#39;, $skey = &#39;wenzi&#39;) {
$strArr = str_split(str_replace(array(&#39;O0O0O&#39;, &#39;o000o&#39;, &#39;oo00o&#39;), array(&#39;=&#39;, &#39;+&#39;, &#39;/&#39;), $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(&#39;&#39;, $strArr));
}
 
echo &#39;<pre class="brush:php;toolbar:false">&#39;;
echo "string : " . $content . " <br />";
echo "encode : " . ($enstring = encode($content)) . &#39;<br />&#39;;
echo "decode : " . decode($enstring);
 
exit();

위 알고리즘을 보면 base64_encode()에서 생성된 문자에 미리 설정한 키를 삽입한 다음 Special을 사용하는 것을 볼 수 있습니다. 문자가 대체되면 다른 사람이 이러한 문자열을 보더라도 그것이 무엇인지 알 수 없습니다. 물론 여기서는 키를 문자열에 거꾸로 삽입하고, base64로 키를 삽입한 다음 키를 삽입한 다음 다시 base64로 삽입하는 등 약간의 개선을 이룰 수 있습니다.

물론 복호화는 암호화의 반대 방향입니다. 잠시 생각한 끝에 복호화의 원리를 깨달았습니다. 문자열에 일부 문자를 삽입하기 전에 이제 복호화할 때 해당 문자를 꺼내야 합니다. 먼저 암호화된 문자열을 각 배열의 2개 요소로 그룹화한 다음 두 번째 문자가 키에 있는지 확인합니다. 그렇다면 첫 번째 문자는 원래 base64의 문자입니다.

요약

물론 php에서는 base64 암호화와 복호화 외에 AES, DES 등의 알고리즘도 있습니다. Script House를 주목해주세요. 모두에게 도움이 될 거라 믿습니다.

PHP에서 간단한 대칭 암호화 알고리즘 구현과 관련된 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.