백엔드 개발 PHP 튜토리얼 ecshop의 aes 암호화 튜토리얼 예시(캡슐화)

ecshop의 aes 암호화 튜토리얼 예시(캡슐화)

Jun 28, 2017 am 10:38 AM
ecshop 암호화 캡슐화

shopex와 ecstore를 하는 회사부터 b2b ecshop을 하는 회사까지... 다른 얘기는 하지 말고 먼저 PHP의 AES 암호화가 무엇인지 알아보겠습니다.

aes(Advanced Encryption Standard), AES의 블록 길이는 128비트로 고정되어 있으며 키 길이는 128, 192 또는 256비트일 수 있습니다. md5와는 다른 가역적 암호화 방법입니다.

AES는 ECB, CBC, CFB 등 여러 모드로 구분됩니다. IV를 사용하지 않아 보안이 그다지 좋지 않은 ECB를 제외하면 다른 모드와의 차이점은 대부분 눈에 띄지 않습니다. 비밀번호를 계산하는 데 사용되는 IV와 KEY에서는 방법이 약간 다릅니다.

IV의 역할은 무엇인가요?

IV는 서로 다른 IV의 암호화된 문자열이 다릅니다. 암호화와 복호화에는 동일한 IV가 필요합니다. IV는 키와 동일하므로 각 블록마다 IV가 하나 더 있습니다. 변경되지 않지만 첫 번째 블록의 IV만 사용자가 제공하고 나머지 블록 IV는 자동으로 생성됩니다.
IV의 길이는 16바이트입니다. 이를 초과하거나 부족하면 구현될 수 있는 라이브러리가 이를 완료하거나 잘라냅니다. 하지만 블록의 길이가 16바이트이므로 일반적으로 필요한 IV는 16바이트라고 볼 수 있다.

이제 aes에 대해 어느 정도 이해했으므로 코딩을 시작해 보겠습니다.

<?phpclass cryptaes{protected $cipher = MCRYPT_RIJNDAEL_128;protected $mode = MCRYPT_MODE_ECB;protected $pad_method = &#39;&#39;;protected $secret_key = &#39;&#39;;protected $iv = &#39;&#39;; public function set_cipher($cipher)
    {$this->cipher = $cipher;
    } public function set_mode($mode)
    {$this->mode = $mode;
    } public function set_iv($iv)
    {$this->iv = $iv;
    } public function set_key($key)
    {$this->secret_key = $key;
    } public function require_pkcs5()
    {$this->pad_method = 'pkcs5';
    } protected function pad_or_unpad($str, $ext)
    {if ( is_null($this->pad_method) )
        {return $str;
        }else{$func_name = __CLASS__ . '::' . $this->pad_method . '_' . $ext . 'pad';if ( is_callable($func_name) )
            {$size = mcrypt_get_block_size($this->cipher, $this->mode);return call_user_func($func_name, $str, $size);
            }
        }return $str;
    } protected function pad($str)
    {return $this->pad_or_unpad($str, '');
    } protected function unpad($str)
    {return $this->pad_or_unpad($str, 'un');
    }     //加密类public function encrypt($str)
    {print_r($str);$str = $this->pad($str);$td = mcrypt_module_open($this->cipher, '', $this->mode, ''); if ( empty($this->iv) )
        {$iv = @mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
        }else{$iv = $this->iv;
        }
 
        mcrypt_generic_init($td, $this->secret_key, $iv);$cyper_text = mcrypt_generic($td, $str);$rt=base64_encode($cyper_text);//$rt = bin2hex($cyper_text);mcrypt_generic_deinit($td);
        mcrypt_module_close($td); return $rt;
    }     //解密类public function decrypt($str){$td = mcrypt_module_open($this->cipher, '', $this->mode, ''); if ( empty($this->iv) )
        {$iv = @mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
        }else{$iv = $this->iv;
        }
 
        mcrypt_generic_init($td, $this->secret_key, $iv);//$decrypted_text = mdecrypt_generic($td, self::hex2bin($str));$decrypted_text = mdecrypt_generic($td, base64_decode($str));$rt = $decrypted_text;
        mcrypt_generic_deinit($td);
        mcrypt_module_close($td); return $this->unpad($rt);
    } public static function hex2bin($hexdata) {$bindata = '';$length = strlen($hexdata);for ($i=0; $i < $length; $i += 2)
        {$bindata .= chr(hexdec(substr($hexdata, $i, 2)));
        }return $bindata;
    } public static function pkcs5_pad($text, $blocksize)
    {$pad = $blocksize - (strlen($text) % $blocksize);return $text . str_repeat(chr($pad), $pad);
    } public static function pkcs5_unpad($text)
    {$pad = ord($text{strlen($text) - 1});if ($pad > strlen($text)) return false;if (strspn($text, chr($pad), strlen($text) - $pad) != $pad) return false;return substr($text, 0, -1 * $pad);
    }
}?>
로그인 후 복사

aes 암호화 및 복호화 패키징 클래스는 필요한 경우 캡슐화되고 암호화됩니다.

require_once(ROOT_PATH . 'includes/lib_smt_cryptaes.php'); //ecshop引入文件方式$aes_obj     = new cryptaes();$iv         = '12345678baiducom';$privateKey = '12345678baiducom';$data['a'] =  ‘周二’;$data['b'] =  ‘周三’;$data['c'] =  ‘周四’;$da = json_encode($data);$aes_obj->set_key($privateKey);$aes_obj->require_pkcs5();$aes_obj->set_iv($iv);$il = $aes_obj->encrypt($da);//写入cookiesetcookie('il', $il,time()+360000); //加密结果$il
로그인 후 복사

여기서 전달하려는 것은 배열만 암호화할 수 있다는 점에 유의해야 합니다. 문자열로 변환해야 합니다.

         = ['il'(ROOT_PATH . 'includes/lib_smt_cryptaes.php'     =      = '12345678baiducom';         = '12345678baiducom'->set_key(->->set_iv( = ->decrypt( = json_decode(,);    
       print_r($j_token);//解密结果
로그인 후 복사

이로써 aes의 암호화 및 전송이 완료됩니다.

누구나 질문하고 소통하며 함께 성장할 수 있습니다.

위 내용은 ecshop의 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 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

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

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

TrendForce: Nvidia의 Blackwell 플랫폼 제품으로 TSMC의 CoWoS 생산 능력이 올해 150% 증가합니다. TrendForce: Nvidia의 Blackwell 플랫폼 제품으로 TSMC의 CoWoS 생산 능력이 올해 150% 증가합니다. Apr 17, 2024 pm 08:00 PM

4월 17일 이 사이트의 뉴스에 따르면 TrendForce는 최근 Nvidia의 새로운 Blackwell 플랫폼 제품에 대한 수요가 강세를 보이고 있으며, 이로 인해 TSMC의 전체 CoWoS 패키징 생산 능력이 2024년에 150% 이상 증가할 것으로 예상된다는 보고서를 발표했습니다. NVIDIA Blackwell의 새로운 플랫폼 제품에는 B 시리즈 GPU와 NVIDIA 자체 GraceArm CPU를 통합한 GB200 가속기 카드가 포함됩니다. TrendForce는 현재 공급망이 GB200에 대해 매우 낙관적이며, 출하량이 2025년에 100만 개를 초과할 것으로 예상되며 이는 Nvidia 고급 GPU의 40~50%를 차지할 것으로 확인했습니다. 엔비디아는 하반기에 GB200, B100 등의 제품을 출시할 계획이지만, 업스트림 웨이퍼 패키징에는 더욱 복잡한 제품을 채택해야 합니다.

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 사용자의 경우 다음 단계에 따라 설정할 수 있습니다. 암호화할 폴더를 선택하고 해당 폴더를 마우스 오른쪽 버튼으로 클릭한 후 "속성"을 선택합니다.

AMD 'Strix Halo' FP11 패키지 크기 노출: Intel LGA1700과 동일, Phoenix보다 60% 더 큼 AMD 'Strix Halo' FP11 패키지 크기 노출: Intel LGA1700과 동일, Phoenix보다 60% 더 큼 Jul 18, 2024 am 02:04 AM

이 웹사이트는 7월 9일에 AMD Zen5 아키텍처 "Strix" 시리즈 프로세서에 두 가지 패키징 솔루션이 있을 것이라고 보고했습니다. 더 작은 StrixPoint는 FP8 패키지를 사용하고 StrixHalo는 FP11 패키지를 사용합니다. 출처: videocardz 출처 @Olrak29_ 최근 밝혀진 바에 따르면 StrixHalo의 FP11 패키지 크기는 37.5mm*45mm(1687제곱밀리미터)로 Intel의 AlderLake 및 RaptorLake CPU의 LGA-1700 패키지 크기와 동일합니다. AMD의 최신 Phoenix APU는 25*40mm 크기의 FP8 패키징 솔루션을 사용합니다. 이는 StrixHalo의 F가

winrar-winrar 암호화 압축 패키지 방법으로 압축 패키지를 암호화하는 방법 winrar-winrar 암호화 압축 패키지 방법으로 압축 패키지를 암호화하는 방법 Mar 23, 2024 pm 12:10 PM

편집기에서는 세 가지 암호화 및 압축 방법을 소개합니다. 방법 1: 암호화 가장 간단한 암호화 방법은 파일을 암호화할 때 설정하려는 비밀번호를 입력하면 암호화 및 압축이 완료됩니다. 방법 2: 자동 암호화 일반 암호화 방법에서는 각 파일을 암호화할 때 비밀번호를 입력해야 합니다. 많은 수의 압축 패키지를 암호화하려는 경우 비밀번호가 동일하면 WinRAR에서 자동 암호화를 설정할 수 있습니다. 파일을 정상적으로 압축하면 WinRAR은 압축된 각 패키지에 비밀번호를 추가합니다. 방법은 다음과 같습니다: WinRAR을 열고 설정 인터페이스에서 옵션-설정을 클릭한 후 [압축]으로 전환하고 기본 구성 생성-비밀번호 설정을 클릭합니다. 여기에 설정하려는 비밀번호를 입력하고 확인을 클릭하여 설정을 완료합니다. 교정하다

C++ 함수는 코드를 캡슐화하여 GUI 개발 효율성을 어떻게 향상합니까? C++ 함수는 코드를 캡슐화하여 GUI 개발 효율성을 어떻게 향상합니까? Apr 25, 2024 pm 12:27 PM

C++ 함수는 코드를 캡슐화함으로써 GUI 개발 효율성을 향상시킬 수 있습니다. 코드 캡슐화: 함수는 코드를 독립적인 단위로 그룹화하여 코드를 더 쉽게 이해하고 유지 관리할 수 있도록 합니다. 재사용성: 함수는 애플리케이션 전체에서 재사용할 수 있는 공통 기능을 생성하여 중복과 오류를 줄입니다. 간결한 코드: 캡슐화된 코드는 기본 논리를 간결하고 쉽게 읽고 디버깅할 수 있도록 만듭니다.

EZVIZ Cloud Video의 암호화된 컴퓨터 버전을 해독하는 방법은 무엇입니까? -EZVIZ Cloud Video PC 버전은 전체 화면에서 종료되나요? EZVIZ Cloud Video의 암호화된 컴퓨터 버전을 해독하는 방법은 무엇입니까? -EZVIZ Cloud Video PC 버전은 전체 화면에서 종료되나요? Mar 18, 2024 pm 12:25 PM

EZVIZ Cloud에서 비디오를 암호화 해제하는 방법: EZVIZ Cloud에서 비디오를 암호화 해제하는 방법에는 여러 가지가 있으며 그 중 하나는 EZVIZ Cloud 모바일 앱을 사용하는 것입니다. 사용자는 장치 목록에 들어가서 암호를 해독할 카메라를 선택하고 장치 세부 정보 페이지에 들어가기만 하면 됩니다. 장치 세부 정보 페이지에서 "설정" 옵션을 찾은 다음 "비디오 암호화"를 선택하여 관련 설정을 지정합니다. 비디오 암호화 설정 인터페이스에서 비디오 암호화를 끄는 옵션을 선택하고 설정을 저장하여 암호 해독 작업을 완료할 수 있습니다. 이 간단한 단계를 통해 사용자는 쉽게 비디오의 암호를 해독할 수 있으며 카메라 사용 편의성이 향상됩니다. EZVIZ Cloud의 컴퓨터 클라이언트를 사용하는 경우 유사한 단계를 통해 비디오 암호화를 취소할 수도 있습니다. 로그인하여 해당 카메라를 선택하고 장치 세부 정보 인터페이스로 들어간 다음 설정에서 비디오 추가를 찾으세요.

암호화폐 베테랑의 새로운 프로젝트인 Analog: 1,600만 달러 모금, 에어드롭 예정 암호화폐 베테랑의 새로운 프로젝트인 Analog: 1,600만 달러 모금, 에어드롭 예정 Feb 22, 2024 pm 04:50 PM

원저자: Meteor, ChainCatcher 원편집자: Marco, ChainCatcher 최근 전체 체인 상호 운용성 프로토콜인 Analog가 1,600만 달러의 자금 조달을 공개하면서 대중의 주목을 받았습니다. 투자 기관으로는 TribeCapital, NGCVentures, Wintermute, GSR, NEAR, OrangeDAO가 있습니다. , Mike Novogratz의 대체 자산 관리 회사 Samara Asset Group, Balaji Srinivasan 등 2023년 말, Analog는 X 플랫폼의 공개 테스트넷 등록 이벤트에 대한 정보를 공개하여 업계에 소란을 일으켰습니다.

See all articles