백엔드 개발 PHP 튜토리얼 PHP에서 AES 암호화 파일 구문 분석(코드 포함)

PHP에서 AES 암호화 파일 구문 분석(코드 포함)

Aug 04, 2018 pm 01:56 PM
암호화

이 기사의 내용은 PHP(코드 포함)의 AES 암호화 파일 분석에 관한 것입니다. 이는 특정 참고 가치가 있으므로 도움이 필요한 친구에게 도움이 되기를 바랍니다.

AES 소개

고급 암호화 표준(AES, Advanced Encryption Standard)은 가장 일반적인 대칭 암호화 알고리즘입니다(WeChat 애플릿 암호화 전송에서는 이 암호화 알고리즘을 사용합니다). 대칭 암호화 알고리즘은 암호화와 복호화에 동일한 키를 사용합니다.

대칭 암호화
암호화와 복호화에 사용되는 키가 동일합니다. 이 암호화 방법은 매우 빠르고 데이터가 자주 전송되는 상황에 적합합니다. 단점은 키 전송이 더 번거롭다는 것입니다. 비밀키는 쉽게 유출됩니다.

비대칭 암호화
암호화와 복호화에 사용되는 키가 다릅니다. 이 암호화 방법은 수학적으로 어려운 문제를 사용하여 구성됩니다. 일반적으로 암호화와 복호화는 속도가 느리고 간헐적인 데이터 전송에 적합합니다. 장점은 키 전송이 편리하다는 것입니다. 일반적인 비대칭 암호화 알고리즘은 RSA, ECC 및 EIGamal입니다.

참고:
PHP7.2는 Mcrypt 확장을 제거했으며 여기서는 OpenSSL 확장이 사용됩니다.

<?php /*
* AES 算法    
*/class Aes {

    private $hex_iv = &#39;00000000000000000000000000000000&#39;; 

    private $key = &#39;397e2eb61307109f6e68006ebcb62f98&#39;;    
    function __construct($key) {
        $this->key = $key;        
        $this->key = hash(&#39;sha256&#39;, $this->key, true);
    }    /*
    * 字符串加密 不写入文件 
    */
    public function encrypt($input)
    {
        $data = openssl_encrypt($input, &#39;AES-256-CBC&#39;, $this->key, OPENSSL_RAW_DATA, $this->hexToStr($this->hex_iv));        
        $data = base64_encode($data);        
        return $data;
    }    /*
    * aes 给PHP文件加密
    * 写入设置文件
    */
    public function filecrypt($filename)
    {
        $type=strtolower(substr(strrchr($filename,&#39;.&#39;),1));            
        if (&#39;php&#39; == $type && is_file($filename) && is_writable($filename)) {  
                 $contents = file_get_contents($filename);                 
                 // echo $contents;exit;  
                 $contents = php_strip_whitespace($filename);                 
                 // echo $contents;exit;
                 // $headerPos = strpos($contents,&#39;<?php&#39;);
                 // echo $headerPos;exit;


                 // $contents = substr($contents, $headerPos + 5, $footerPos - $headerPos);
                 // echo $contents;
                 exit;
                 $data = openssl_encrypt($contents, &#39;AES-256-CBC&#39;, $this->key, OPENSSL_RAW_DATA, $this->hexToStr($this->hex_iv));                 
                 // echo $data;exit;
                 $data = base64_encode($data);                
                  // echo $data;exit;
                 return file_put_contents($filename, $data);  
            }  
                 return false;  
    }    /*
    * 字符串解密
    */
    public function decrypt($input)
    {
        $decrypted = openssl_decrypt(base64_decode($input), &#39;AES-256-CBC&#39;, $this->key, OPENSSL_RAW_DATA, $this->hexToStr($this->hex_iv));        
        return $decrypted;
    }    /*
      For PKCS7 padding
     */

    private function addpadding($string, $blocksize = 16) {

        $len = strlen($string);        
        $pad = $blocksize - ($len % $blocksize);        
        $string .= str_repeat(chr($pad), $pad);        
        return $string;

    }    private function strippadding($string) {

        $slast = ord(substr($string, -1));        
        $slastc = chr($slast);        
        $pcheck = substr($string, -$slast);        
        if (preg_match("/$slastc{" . $slast . "}/", $string)) {            
        $string = substr($string, 0, strlen($string) - $slast);            
        return $string;

        } else {            
        return false;

        }

    }    
    function hexToStr($hex)
    {

        $string=&#39;&#39;;        
        for ($i=0; $i < strlen($hex)-1; $i+=2)

        {            
        $string .= chr(hexdec($hex[$i].$hex[$i+1]));

        }        
        return $string;
    }

}
$key = &#39;397e2eb61307109f6e68006ebcb62f98&#39;;
$aes = new Aes($key);
$filename = __DIR__.&#39;\exchange.php&#39;;
// $filename = &#39;Y6RCuF6ETPC5J57hfhxovg==&#39;;
// 加密
$string = $aes->filecrypt($filename);
// echo $string;
echo "OK,加密完成!" ;
로그인 후 복사

2. PHP 파일을 암호화하는 간단한 함수

<?php  

 function encode_file_contents($filename) {  
     $type=strtolower(substr(strrchr($filename,&#39;.&#39;),1));  
     if (&#39;php&#39; == $type && is_file($filename) && is_writable($filename)) { // 如果是PHP文件 并且可写 则进行压缩编码  
         $contents = file_get_contents($filename); // 判断文件是否已经被编码处理  
         $contents = php_strip_whitespace($filename);   

         // 去除PHP头部和尾部标识  
         $headerPos = strpos($contents,&#39;<?php&#39;);  
         $footerPos = strrpos($contents,&#39;?>&#39;);  
         $contents = substr($contents, $headerPos + 5, $footerPos - $headerPos);  
         $encode = base64_encode(gzdeflate($contents)); // 开始编码  
         $encode = &#39;<?php&#39;."\n eval(gzinflate(base64_decode("."&#39;".$encode."&#39;".")));\n\n?>";   

         return file_put_contents($filename, $encode);  
     }  
     return false;  
 }   

 //调用函数
 // echo __DIR__.&#39;\server.php&#39;;   
 $filename = __DIR__.&#39;\server.php&#39;;  
 encode_file_contents($filename);  
 echo "OK,加密完成!" ;
로그인 후 복사

추천 관련 글:

php에서 컬의 post 메소드 요청 코드와 get 메소드

thinkphp5에서 json 객체를 배열(코드)로 변환하는 방법

위 내용은 PHP에서 AES 암호화 파일 구문 분석(코드 포함)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

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

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

보안 강화를 위해 Windows 11에서 256비트 Bitlocker 암호화를 활성화합니다. 보안 강화를 위해 Windows 11에서 256비트 Bitlocker 암호화를 활성화합니다. Nov 26, 2023 am 11:21 AM

Bitlocker는 Windows 운영 체제의 기본 암호화 기술입니다. Windows에서 널리 사용되지만 일부 사용자는 VeraCrypt와 같은 타사 솔루션을 선호합니다. Bitlocker의 많은 사용자는 256비트를 사용할 수 있음에도 불구하고 기본적으로 128비트 암호화로 설정된다는 사실을 모르고 있습니다. AES 128비트 암호화와 256비트 암호화의 핵심 차이점은 보안 키의 길이입니다. 키가 길수록 무차별 대입 공격이 더 어려워집니다. 기본값은 128비트이지만 Microsoft에서도 보안 강화를 위해 256비트를 권장합니다. 문제는 대부분의 사용자가 더 약한 기본값이나 이를 변경하는 방법을 모른다는 것입니다. 먼저 W를 알고 싶을 수도 있습니다.

Win11 암호화된 DNS 상세 튜토리얼 Win11 암호화된 DNS 상세 튜토리얼 Dec 25, 2023 am 10:13 AM

Microsoft는 이전에 win11에 대한 DNS 암호화 서비스를 제공했지만 많은 사용자는 win11 암호화된 DNS를 사용하는 방법을 모릅니다. 실제로 네트워크 설정에서 DNS 설정만 열면 됩니다. win11 암호화된 DNS에 대한 자세한 튜토리얼: 1. 먼저 디스크에 들어가서 암호화하려는 폴더를 찾으십시오. 2. 그런 다음 오른쪽의 "이더넷"을 엽니다. 3. 그런 다음 아래의 DNS 서버 할당을 찾아 "편집"을 클릭합니다. 4. "자동(DHCP)"을 "수동"으로 변경한 후 아래의 "IPv4"를 엽니다. 5. 켠 후 , 기본 DNS에 "8.8.8.8"을 입력합니다. 6. 그런 다음 기본 DNS 암호화를 "암호화만(DNS over HTTPS)"로 변경합니다. 7. 변경이 완료된 후 "저장"을 클릭하면 다음을 찾을 수 있습니다.

Win10 Home Edition은 폴더 암호화를 지원합니까? Win10 Home Edition은 폴더 암호화를 지원합니까? Jan 09, 2024 am 08:58 AM

파일 암호화는 데이터 보안을 보다 효과적으로 보장하기 위해 전문가 수준의 데이터 암호화를 구현하는 것을 목표로 합니다! 올바른 암호화 키를 마스터해야만 해독 작업을 수행할 수 있어 정보 자산의 보안이 보장됩니다. 하지만 Win10 Home Edition의 파일 암호화 기능에는 아직 이 기능이 없습니다. Win10 Home Edition은 폴더를 암호화할 수 있습니까? 대답: Win10 Home Edition은 폴더를 암호화할 수 없습니다. Windows 시스템에서 파일 암호화 튜토리얼 1. 암호화하려는 파일 또는 폴더를 마우스 오른쪽 버튼으로 클릭한 후(또는 잠시 누르고 있음) "속성" 기능을 선택합니다. 2. 새로운 확장 인터페이스에서 '고급' 옵션을 찾아 들어가신 후 아래에 있는 '데이터를 보호하기 위해 콘텐츠 암호화' 옵션을 선택하세요. 3. 설정이 완료되면 "확인"을 클릭하여

Apple 휴대폰에서 사진 앨범 암호화를 설정하는 방법 Apple 휴대폰에서 사진 앨범 암호화를 설정하는 방법 Mar 02, 2024 pm 05:31 PM

Apple 휴대폰에서 사용자는 필요에 따라 사진 앨범을 암호화할 수 있습니다. 일부 사용자는 설정 방법을 모릅니다. 암호화해야 할 사진을 메모에 추가한 후 메모를 잠글 수 있습니다. 다음으로 관심 있는 사용자들을 위해 편집자가 모바일 사진 앨범 암호화 설정 방법을 소개합니다. Apple 휴대폰 튜토리얼 iPhone 사진 앨범 암호화 설정 방법 A: 암호화해야 할 사진을 메모에 추가한 후 자세한 소개를 위해 메모 잠금으로 이동합니다. 1. 사진 앨범에 들어가서 암호화해야 할 사진을 선택합니다. 암호화한 후 아래의 [추가]를 클릭하세요. 2. [메모에 추가]를 선택하세요. 3. 메모를 입력하고, 방금 작성한 메모를 찾아 입력한 후 오른쪽 상단의 [보내기] 아이콘을 클릭하세요. 4. 아래 [기기 잠금]을 클릭하세요.

압축하지 않고 폴더 암호화를 위한 비밀번호를 설정하는 방법 압축하지 않고 폴더 암호화를 위한 비밀번호를 설정하는 방법 Feb 20, 2024 pm 03:27 PM

폴더 암호화는 복호화 비밀번호를 아는 사람만 파일에 액세스할 수 있도록 폴더의 내용을 암호화하는 일반적인 데이터 보호 방법입니다. 폴더를 암호화할 때 파일을 압축하지 않고 비밀번호를 설정하는 몇 가지 일반적인 방법이 있습니다. 먼저, 운영 체제와 함께 제공되는 암호화 기능을 사용하여 폴더 비밀번호를 설정할 수 있습니다. Windows 사용자의 경우 다음 단계에 따라 설정할 수 있습니다. 암호화할 폴더를 선택하고 해당 폴더를 마우스 오른쪽 버튼으로 클릭한 후 "속성"을 선택합니다.

C#의 일반적인 네트워크 통신 및 보안 문제와 솔루션 C#의 일반적인 네트워크 통신 및 보안 문제와 솔루션 Oct 09, 2023 pm 09:21 PM

C#의 일반적인 네트워크 통신 및 보안 문제와 해결 방법 오늘날 인터넷 시대에 네트워크 통신은 소프트웨어 개발에 없어서는 안 될 부분이 되었습니다. C#에서는 일반적으로 데이터 전송 보안, 네트워크 연결 안정성 등과 같은 일부 네트워크 통신 문제가 발생합니다. 이 문서에서는 C#의 일반적인 네트워크 통신 및 보안 문제에 대해 자세히 설명하고 해당 솔루션과 코드 예제를 제공합니다. 1. 네트워크 통신 문제 네트워크 연결 중단: 네트워크 통신 과정에서 네트워크 연결이 중단될 수 있으며, 이로 인해

win11 파일 암호화에 대한 전체 가이드 win11 파일 암호화에 대한 전체 가이드 Jan 09, 2024 pm 02:50 PM

일부 친구는 파일을 보호하고 싶지만 win11 문서를 암호화하는 방법을 모릅니다. 실제로 폴더 암호화를 사용하거나 타사 소프트웨어를 사용하여 파일을 암호화할 수 있습니다. win11 문서 암호화에 대한 자세한 튜토리얼: 1. 먼저 암호화하려는 파일을 찾아 마우스 오른쪽 버튼으로 클릭하여 선택한 다음 "속성"을 엽니다. 2. 그런 다음 속성 열에서 "고급"을 클릭합니다. 3. "데이터를 보호하기 위해 콘텐츠 암호화"를 선택합니다. "를 클릭하고 "확인"을 클릭합니다. 4. 그런 다음 "확인"을 클릭하여 저장합니다. 5. 마지막으로 원하는 암호화 모드를 선택하고 "확인"을 눌러 문서를 암호화하여 저장합니다.

PHP 암호화 및 복호화 기능의 전체 목록: md5, sha1, base64_encode 및 기타 기능의 안전한 적용 방법 PHP 암호화 및 복호화 기능의 전체 목록: md5, sha1, base64_encode 및 기타 기능의 안전한 적용 방법 Nov 18, 2023 pm 04:18 PM

PHP 암호화 및 암호 해독 기능의 전체 목록: md5, sha1, base64_encode 및 기타 기능의 안전한 응용 방법(특정 코드 예제가 필요함)은 네트워크 응용 프로그램 개발에서 데이터 암호화 및 암호 해독이 매우 중요합니다. 널리 사용되는 서버 측 스크립팅 언어인 PHP는 다양한 암호화 및 암호 해독 기능을 제공합니다. 이 기사에서는 일반적으로 사용되는 기능과 보안 적용 방법을 소개하고 구체적인 코드 예제를 제공합니다. md5 함수 md5 함수는 모든 길이의 문자열을 32비트로 변환할 수 있는 가장 일반적인 암호화 함수입니다.

See all articles