mcrypt_get_block_size('rijndael-128', 'ecb');를 포함한 표준 PHP AES 암호화 알고리즘 클래스를 공유합니다. 원리를 이해하지 못하고 실수하기 쉽다면 mcrypt_list_algorithms를 통해 필요한 암호화를 확인할 수 있습니다. 함수. 알고리즘 ID입니다.
/**
* AES128 암호화 및 복호화 클래스
* @author dy
*
*/
정의됨('InEjbuy') 또는 종료('액세스가 잘못되었습니다!');
클래스 Aes{
//키
비공개 $_secret_key;
공개 함수 __construct(){
$this->_secret_key = 'MYgGnQE2jDFADSFFDSEWsdD';
}
/**
* 암호화 방법
* @param 문자열 $str
* @return 문자열
*/
공개 함수 암호화($str){
//AES, 128 ECB 모드 암호화된 데이터
$scect_key = $this->_secret_key;
$scect_key = base64_decode($scect_key);
$str = 트림($str);
$str = $this->addPKCS7Padding($str);
$iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128,MCRYPT_MODE_ECB),MCRYPT_RAND);
$encrypt_str = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $scret_key, $str, MCRYPT_MODE_ECB, $iv);
return base64_encode($encrypt_str);
}
/**
* 복호화 방법
* @param 문자열 $str
* @return 문자열
*/
공개 함수 해독($str){
//AES, 128 ECB 모드로 암호화된 데이터
$scect_key = $this->_secret_key;
$str = base64_decode($str);
$scect_key = base64_decode($scect_key);
$iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128,MCRYPT_MODE_ECB),MCRYPT_RAND);
$encrypt_str = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $scret_key, $str, MCRYPT_MODE_ECB, $iv);
$encrypt_str = 트림($encrypt_str);
$encrypt_str = $this->stripPKSC7Padding($encrypt_str);
$encrypt_str 반환
}
/**
* 채우기 알고리즘
* @param 문자열 $source
* @return 문자열
*/
함수 addPKCS7Padding($source){
$source = 트림($source);
$block = mcrypt_get_block_size('rijndael-128', 'ecb');
$pad = $block - (strlen($source) % $block);
If ($pad <= $block) {
$char = chr($pad);
$source .= str_repeat($char, $pad);
}
$source 반환;
}
/**
* * 패딩 알고리즘 제거
* @param 문자열 $source
* @return 문자열
*/
함수 StripPKSC7Padding($source){
$source = 트림($source);
$char = substr($source, -1);
$num = ord($char);
If($num==62)return $source;
$source = substr($source,0,-$num);
$source 반환;
}
}
위 내용은 이 글에 설명된 내용의 전부입니다. PHP의 AES 암호화 알고리즘 클래스를 배우시는 모든 분들께 도움이 되었으면 좋겠습니다.