어떻게 PHP 에서 AES 암호 화 알고리즘 을 사용 하여 데 이 터 를 암호 화 합 니까?
이 외 에 도 AES 라 는 알고리즘 은 데 이 터 를 잘 암호 화 할 수 있어 전송 과정 에서 쉽게 풀 리 지 않 습 니 다.
PHP 에 서 는 mcrypt 모듈 을 먼저 설치 하고 해당 버 전의 확장 을 php 에 추가 해 야 합 니 다.자세 한 내용 은 PHP 를 다시 컴 파일 하지 않 고 Mcrypt 확장 을 설치 하 는 것 을 볼 수 있 습 니 다.
AES 암호 화 모드 와 충전 방식 은 다음 과 같 지만 전부 가 아 닙 니 다.
/ / 16 16
AES/CBC/NoPadding 16
AES/CBC/PKCS5Padding 32 16
AES/CBC/ISO10126Padding 32 16
AES/CFB/NoPadding 16
AES/CFB/PKCS5Padding 32 16
AES/CFB/ISO10126Padding 32 16
AES/ECB/NoPadding 16
AES/ECB/PKCS5Padding 32 16
AES/ECB/ISO10126Padding 32 16
AES/OFB/NoPadding 16
AES/OFB/PKCS5Padding 32 16
AES/OFB/ISO10126Padding 32 16
AES/PCBC/NoPadding 16
AES/PCBC/PKCS5Padding 32 16
AES/PCBC/ISO10126Padding 32 16
다음은 PHP 에서 AES 를 사용 하여 데 이 터 를 암호 화 하 는 것 입 니 다.AES-CBC 암호 화 방안
<?php
$privateKey = "1234567812345678";
$iv = "1234567812345678";
$data = "Test String";
//
$encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $privateKey, $data, MCRYPT_MODE_CBC, $iv);
echo(base64_encode($encrypted));
echo '<br/>';
//
$encryptedData = base64_decode("2fbwW9+8vPId2/foafZq6Q==");
$decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $privateKey, $encryptedData, MCRYPT_MODE_CBC, $iv);
echo($decrypted);
?>
AES-ECB 암호 화 방안
<?php
//
$key = '1234567890123456';
$content = 'hello';
$padkey = pad2Length($key,16);
$cipher = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_ECB, '');
$iv_size = mcrypt_enc_get_iv_size($cipher);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND); #IV ?
echo ' iv :'.strlen($iv).' :'.bin2hex($iv).'<br>';
if (mcrypt_generic_init($cipher, pad2Length($key,16), $iv) != -1)
{
// PHP pads with NULL bytes if $content is not a multiple of the block size..
$cipherText = mcrypt_generic($cipher,pad2Length($content,16) );
mcrypt_generic_deinit($cipher);
mcrypt_module_close($cipher);
// Display the result in hex.
printf("128-bit encrypted result:n%snn",bin2hex($cipherText));
print("<br />");
}
//
$mw = bin2hex($cipherText);
$td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_ECB, '');
if (mcrypt_generic_init($td, $padkey, $iv) != -1)
{
$p_t = mdecrypt_generic($td, hexToStr($mw));
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
$p_t = trimEnd($p_t);
echo ' :';
print($p_t);
print("<br />");
print(bin2hex($p_t));
echo '<br><br>';
}
// $text $padlen
function pad2Length($text, $padlen){
$len = strlen($text)%$padlen;
$res = $text;
$span = $padlen-$len;
for($i=0; $i<$span; $i++){
$res .= chr($span);
}
return $res;
}
// ( block_size )
function trimEnd($text){
$len = strlen($text);
$c = $text[$len-1];
if(ord($c) <$len){
for($i=$len-ord($c); $i<$len; $i++){
if($text[$i] != $c){
return $text;
}
}
return substr($text, 0, $len-ord($c));
}
return $text;
}
//16 2
function hexToStr($hex)
{
$bin="";
for($i=0; $i<strlen($hex)-1; $i+=2)
{
$bin.=chr(hexdec($hex[$i].$hex[$i+1]));
}
return $bin;
}
AES-ECB 암호 화 방안
<?php
$key = '1234567890123456';
$key = pad2Length($key,16);
$iv = 'asdff';
$content = 'hello';
$content = pad2Length($content,16);
$AESed = bin2hex( mcrypt_encrypt(MCRYPT_RIJNDAEL_128,$key,$content,MCRYPT_MODE_ECB,$iv) ); #
echo "128-bit encrypted result:".$AESed.'<br>';
$jiemi = mcrypt_decrypt(MCRYPT_RIJNDAEL_128,$key,hexToStr($AESed),MCRYPT_MODE_ECB,$iv); #
echo ' :';
echo trimEnd($jiemi);
?>
이상 은 제 가 열거 한 간단 한 3 가지 암호 화 방법 일 뿐 입 니 다.사실은 많은 방법 이 있 습 니 다.우 리 는 계속 공부 해 야 합 니 다.암호학 의 길 은 아직 책임 이 무 겁 고 갈 길이 멀다.이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
laravel에 yo에서 angularJs&coffeescript를 사용할 수 있도록 한다.먼저 yo 명령을 사용할 수 있어야하므로 아래에서 설치 global에 설치한 곳에서 laravel의 프로젝트 루트로 이동. 클라이언트 코드를 관리하는 디렉토리를 만들고 이동합니다. 클라이언트 환경 만들기 이것으로 히...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.