2개의 클래식 PHP 암호화 및 복호화 기능 공유
때때로 프로젝트에서 특정 정보를 암호화하기 위해, 즉 암호화 알고리즘을 통해 암호화된 문자열을 생성하기 위해 PHP를 사용해야 하는 경우가 있습니다. 이 암호화된 문자열은 해독된 정보를 프로그램이 쉽게 처리할 수 있도록 해독 알고리즘을 통해 해독될 수 있습니다. .
가장 일반적인 애플리케이션은 사용자 로그인 및 일부 API 데이터 교환 시나리오입니다.
저자는 여러분과 공유하기 위해 몇 가지 고전적인 PHP 암호화 및 복호화 기능 코드를 수집했습니다. 암호화 및 복호화의 원칙은 일반적으로 특정 암호화 및 복호화 알고리즘을 사용하고 알고리즘에 키를 추가한 후 최종적으로 암호화 및 복호화 결과를 얻는 것입니다.
1. 매우 강력한 인증 코드 암호화 기능인 Discuz! Classic 코드(자세한 설명 포함):
function authcode($string, $operation = 'DECODE', $key = '', $expiry = 0) { // 动态密匙长度,相同的明文会生成不同密文就是依靠动态密匙 $ckey_length = 4; // 密匙 $key = md5($key ? $key : $GLOBALS['discuz_auth_key']); // 密匙a会参与加解密 $keya = md5(substr($key, 0, 16)); // 密匙b会用来做数据完整性验证 $keyb = md5(substr($key, 16, 16)); // 密匙c用于变化生成的密文 $keyc = $ckey_length ? ($operation == 'DECODE' ? substr($string, 0, $ckey_length): substr(md5(microtime()), -$ckey_length)) : ''; // 参与运算的密匙 $cryptkey = $keya.md5($keya.$keyc); $key_length = strlen($cryptkey); // 明文,前10位用来保存时间戳,解密时验证数据有效性,10到26位用来保存$keyb(密匙b), //解密时会通过这个密匙验证数据完整性 // 如果是解码的话,会从第$ckey_length位开始,因为密文前$ckey_length位保存 动态密匙,以保证解密正确 $string = $operation == 'DECODE' ? base64_decode(substr($string, $ckey_length)) : sprintf('%010d', $expiry ? $expiry + time() : 0).substr(md5($string.$keyb), 0, 16).$string; $string_length = strlen($string); $result = ''; $box = range(0, 255); $rndkey = array(); // 产生密匙簿 for($i = 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; $tmp = $box[$i]; $box[$i] = $box[$j]; $box[$j] = $tmp; } // 核心加解密部分 for($a = $j = $i = 0; $i < $string_length; $i++) { $a = ($a + 1) % 256; $j = ($j + $box[$a]) % 256; $tmp = $box[$a]; $box[$a] = $box[$j]; $box[$j] = $tmp; // 从密匙簿得出密匙进行异或,再转成字符 $result .= chr(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 { // 把动态密匙保存在密文里,这也是为什么同样的明文,生产不同密文后能解密的原因 // 因为加密后的密文可能是一些特殊字符,复制过程可能会丢失,所以用base64编码 return $keyc.str_replace('=', '', base64_encode($result)); } }
함수 인증 코드의 $string($string, $Operation, $key, $expiry): 문자열, 일반 텍스트 또는 암호 텍스트입니다. $Operation: DECODE는 암호 해독을 의미하고, 기타는 암호화를 의미합니다. $key: 비밀 키: 암호 텍스트 유효 기간.
사용법:
$str = 'abcdef'; $key = 'www.helloweba.com'; echo authcode($str,'ENCODE',$key,0); //加密 $str = '56f4yER1DI2WTzWMqsfPpS9hwyoJnFP2MpC8SOhRrxO7BOk'; echo authcode($str,'DECODE',$key,0); //解密
2. 암호화 및 복호화 기능 encrypt():
function encrypt($string,$operation,$key=''){ $key=md5($key); $key_length=strlen($key); $string=$operation=='D'?base64_decode($string):substr(md5($string.$key),0,8).$string; $string_length=strlen($string); $rndkey=$box=array(); $result=''; for($i=0;$i<=255;$i++){ $rndkey[$i]=ord($key[$i%$key_length]); $box[$i]=$i; } for($j=$i=0;$i<256;$i++){ $j=($j+$box[$i]+$rndkey[$i])%256; $tmp=$box[$i]; $box[$i]=$box[$j]; $box[$j]=$tmp; } for($a=$j=$i=0;$i<$string_length;$i++){ $a=($a+1)%256; $j=($j+$box[$a])%256; $tmp=$box[$a]; $box[$a]=$box[$j]; $box[$j]=$tmp; $result.=chr(ord($string[$i])^($box[($box[$a]+$box[$j])%256])); } if($operation=='D'){ if(substr($result,0,8)==substr(md5(substr($result,8).$key),0,8)){ return substr($result,8); }else{ return''; } }else{ return str_replace('=','',base64_encode($result)); } }
함수 encrypt($string,$Operation,$key)의 $string ) : 암호화 및 암호 해독이 필요한 문자열입니다. $작업: 암호화 또는 암호 해독 여부를 결정합니다. E는 암호화를 의미하고, $key: 키를 의미합니다.
사용법:
$str = 'abc'; $key = 'www.helloweba.com'; $token = encrypt($str, 'E', $key); echo '加密:'.encrypt($str, 'E', $key); echo '解密:'.encrypt($str, 'D', $key);
2가지 이상의 클래식 PHP 암호화 및 복호화 기능을 보려면 PHP 중국어 웹사이트에서 관련 기사를 확인하세요.

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











이 글은 타사 암호화 및 복호화 도구를 사용하지 않고 파일을 암호화하고 복호화하는 방법에 대한 튜토리얼입니다. Win11의 오른쪽 클릭 메뉴에 암호화 및 복호화 방법을 추가하는 방법에 대한 튜토리얼입니다. 계속하기 전에 백업하십시오. 1. 먼저 키보드에서 [Win+R] 키 조합을 눌러 실행을 연 다음, [regedit] 명령을 입력하고 [확인 또는 Enter]를 눌러 레지스트리 편집기를 엽니다. 2. 사용자 계정 컨트롤 창에서 허용해야 합니다. 이 앱이 기기를 변경합니까? [예]를 클릭합니다. 3. 레지스트리 편집기 창에서 다음 경로로 확장합니다: HKEY_CURRENT_USER\Software\Microsoft\Windows\Curr

Yii 프레임워크 미들웨어를 사용하여 민감한 데이터 암호화 및 해독 소개: 최신 인터넷 애플리케이션에서 개인 정보 보호 및 데이터 보안은 매우 중요한 문제입니다. 승인되지 않은 방문자가 사용자의 민감한 데이터에 접근할 수 없도록 하려면 이 데이터를 암호화해야 합니다. Yii 프레임워크는 민감한 데이터를 암호화하고 해독하는 기능을 구현하는 간단하고 효과적인 방법을 제공합니다. 이 글에서는 Yii 프레임워크의 미들웨어를 사용하여 이를 달성하는 방법을 다룰 것입니다. Yii 프레임워크 소개 Yii 프레임워크는 고성능 PHP 프레임워크입니다.

제목: ReactQuery와 데이터베이스를 이용한 데이터 암호화 및 복호화 소개: 이 글에서는 데이터 암호화 및 복호화를 위해 ReactQuery와 데이터베이스를 활용하는 방법을 소개합니다. ReactQuery를 데이터 관리 라이브러리로 사용하고 이를 데이터베이스와 결합하여 데이터 암호화 및 암호 해독 작업을 수행합니다. 이 두 가지 기술을 결합함으로써 민감한 데이터를 안전하게 저장 및 전송할 수 있으며 필요할 때 암호화 및 암호 해독 작업을 수행하여 데이터 보안을 보장할 수 있습니다. 텍스트: 1. ReactQue

위챗 미니 프로그램이 모바일 애플리케이션 시장에서 인기를 끌면서 위챗의 개발도 점점 더 주목을 받고 있다. 소규모 프로그램에서는 일반적으로 사용되는 백엔드 언어인 PHP를 사용하여 민감한 데이터의 암호화 및 암호 해독을 처리하는 경우가 많습니다. 이 기사에서는 PHP를 사용하여 WeChat 애플릿에서 암호화 및 암호 해독을 구현하는 방법을 소개합니다. 1. 암호화와 복호화란 무엇인가요? 암호화는 전송 중에 데이터가 도난당하거나 변조되지 않도록 하기 위해 민감한 데이터를 읽을 수 없는 형식으로 변환하는 것입니다. 복호화는 암호화된 데이터를 원본 데이터로 복원하는 것입니다. 소규모 프로그램에서 암호화 및 암호 해독에는 일반적으로 다음이 포함됩니다.

PHP 메일박스 개발: 이메일 암호화 및 복호화 기능 구현 정보 전송의 발전으로 이메일은 사람들의 중요한 커뮤니케이션 방법 중 하나가 되었습니다. 그러나 그에 따른 보안 문제는 점차 사람들의 관심을 끌기 시작했습니다. 이메일의 보안을 보호하기 위해 암호화 및 암호 해독은 이메일 보내기 및 받기의 중요한 측면이 되었습니다. 이 기사에서는 PHP를 사용하여 이메일 보안을 향상시키는 이메일 암호화 및 암호 해독 기능을 개발하는 방법을 소개합니다. 1. 암호화의 원리 및 기능 이메일 암호화는 특정 알고리즘을 사용하여 이메일 내용을 변환하여 수신자뿐만 아니라

PHP의 데이터 암호화 및 암호 해독 예 Tencent Cloud Server API 인터페이스 도킹 클라우드 서버가 널리 적용됨에 따라 점점 더 많은 개발자가 자신의 애플리케이션을 클라우드 서버에 배포하기 시작했습니다. Tencent Cloud 서버 API 인터페이스와 연결하는 과정에서 데이터 암호화 및 복호화는 중요한 링크입니다. 이 기사에서는 PHP의 데이터 암호화 및 암호 해독의 예를 소개합니다. Tencent Cloud 서버 API 인터페이스에 연결할 때 일반적으로 데이터 보안을 보장하기 위해 일부 민감한 데이터를 암호화해야 합니다. 동시에 픽업도 필요합니다.

PHP를 사용하여 Tencent Cloud Server의 API 인터페이스와 도킹하는 과정에서 데이터 암호화 및 복호화 예제 소개: Tencent Cloud Server의 API 인터페이스와 도킹하는 과정에서 데이터 보안은 매우 중요합니다. 전송 및 저장 중 데이터 보안을 보장하려면 민감한 정보를 암호화해야 합니다. 이 기사에서는 PHP를 사용하여 데이터를 암호화하고 해독하여 데이터 기밀성과 무결성을 향상시키는 방법을 소개합니다. 데이터 암호화: API 요청 시 데이터 보안을 보장하기 위해 중요한 정보를 암호화해야 합니다. 흔한

Java 함수 라이브러리는 JCE, JCA, Apache CommonsCrypt 등을 포함한 다양한 암호화 및 암호 해독 도구를 제공합니다. JCE는 암호화 알고리즘과 기능을 제공하고, JCA는 암호화 서비스 공급자에 액세스하기 위한 인터페이스를 제공하며, Apache CommonsCrypt에는 더 많은 암호화 알고리즘과 도구가 포함되어 있습니다. 실제 사례에서는 JCE를 사용하여 AES 암호화 텍스트를 생성하고 Base64로 인코딩된 암호 텍스트를 생성하는 방법을 보여줍니다.
