최근에 갑자기 기밀 사항을 데이터베이스에 저장하고 싶었는데, 데이터베이스에 들어가도 저장된 내용을 다른 사람이 알 수 없게 하는 방법에 대해 생각했는데 유일한 방법은 암호화하는 것입니다. 직접 보면 대칭 암호화 알고리즘을 찾아서 보고 싶을 때 해독할 수 있습니다. 다음은 PHP에서 간단한 대칭 암호화 알고리즘의 구현을 소개합니다.
머리말
PHP 구문 환경에서 인터넷에서 PHP에 대한 좋은 대칭 암호화 알고리즘을 찾았습니다. urlencode 및 urldecode, base64_encode 및 base64_decode와 함께 제공되는 대칭 알고리즘이 있지만 이러한 내장 알고리즘은 암호화 알고리즘이라고 부를 수 없으며 인코딩 방법이라고만 부를 수 있습니다. 그러나 이를 사용하여 간단한 암호화 및 암호 해독 알고리즘을 구현하기 위한 일부 처리를 수행할 수 있습니다.
이번에는 base64를 사용하여 암호화 및 복호화 알고리즘을 적용했습니다. 일반적으로base64_encode($str)
에 의해 생성된 문자열을 사용합니다. 아무런 처리 없이base64_decode()
는 이전 문자열로 다시 변환할 수 있습니다.base64_encode()
이후에 문자열로 변환하면 다시 변환할 수 없습니다.base64_encode($str)
产生的字符串,不经过任何的加工的话,base64_decode()
就能转回我们之前的字符串;可是如果我们在base64_encode()
之后的字符串里插入几个字符呢,那他就转不回来了,即使转过来也不是我们自己的字符串。
示例代码如下:
$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 ''; echo "string : " . $content . "
"; echo "encode : " . ($enstring = encode($content)) . '
'; echo "decode : " . decode($enstring); exit();로그인 후 복사
上面的算法里我们可以看到:我们把base64_encode()
샘플 코드는 다음과 같습니다.
rrreee
위 알고리즘에서 볼 수 있듯이base64_encode()
에 의해 생성된 문자를 삽입합니다. > 우리는 미리 키를 설정한 후 그 안에 있는 특수문자를 교체합니다. 다른 사람들이 이러한 문자열을 보더라도 그것이 무엇인지 알 수 없습니다. 물론 여기서는 키를 문자열에 거꾸로 삽입하고, base64로 키를 삽입한 다음 키를 삽입한 다음 다시 base64로 삽입하는 등 약간의 개선을 이룰 수 있습니다.
관련 권장 사항:PHP는 재귀를 사용합니다
알고리즘
PHP는 일반적으로 사용되는
알고리즘 자세한 설명 데이터 구조 예위 내용은 PHP에서 대칭 암호화 알고리즘 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!