>  기사  >  백엔드 개발  >  PHP는 간단한 대칭 암호화를 구현합니다.

PHP는 간단한 대칭 암호화를 구현합니다.

*文
*文원래의
2018-01-02 16:13:363671검색

때때로 프로젝트에서 암호화해야 할 데이터가 발생하는데, 직접 복호화해야 하기 때문에 일부 대칭 암호화 알고리즘만 찾은 다음 보고 싶을 때 복호화할 수 있습니다. 이 기사에서는 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 = &#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()

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

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

물론 복호화는 암호화의 반대 방향입니다. 잠시 생각한 끝에 복호화의 원리를 깨달았습니다. 문자열에 일부 문자를 삽입하기 전에 이제 복호화할 때 문자를 추출해야 합니다. 암호화된 문자열은 각 배열의 2개 요소로 그룹화한 다음 두 번째 문자가 키에 있는지 확인합니다. 그렇다면 첫 번째 문자는 원래 base64의 문자입니다. H 관련 권장 사항: pPhp 암호화 해독

Php 비밀번호를 더 잘 암호화하는 방법

Php를 사용하여 Flash 세부 데이터 얻기

위 내용은 PHP는 간단한 대칭 암호화를 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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