>백엔드 개발 >PHP 튜토리얼 >PHP는 AES 대칭 암호화 기술을 구현합니다.

PHP는 AES 대칭 암호화 기술을 구현합니다.

WBOY
WBOY원래의
2023-06-18 08:46:134520검색

정보 기술의 지속적인 발전과 함께 암호화 기술은 다양한 분야에서 점점 더 널리 사용되고 있습니다. 그 중 AES 대칭 암호화 기술은 현재 가장 일반적으로 사용되는 암호화 알고리즘 중 하나이며 데이터 보안을 보장할 수 있으며 다양한 응용 분야를 가지고 있습니다. 이 기사에서는 PHP를 사용하여 AES 대칭 암호화 기술을 구현하는 방법을 소개합니다.

1. AES 대칭 암호화 기술이란?

AES는 Advanced Encryption Standard의 약자로 현재 가장 널리 사용되는 대칭 암호화 알고리즘 중 하나입니다. 대칭 암호화란 암호화와 복호화에 동일한 키가 사용된다는 의미입니다. 원칙은 암호문을 얻기 위해 일반 텍스트와 키에 대해 복잡한 XOR 연산, 이동 및 대체를 수행하는 것입니다. 키가 없으면 복호화는 불가능합니다.

2. PHP에서 AES 대칭 암호화 사용

1. openssl 확장 로드 및 키 생성

PHP에서 AES 대칭 암호화를 사용하려면 openssl 확장을 사용해야 합니다. 이 확장은 php.ini 파일에서 켜거나 다음 코드를 사용하여 코드에 로드할 수 있습니다:

extension=php_openssl.dll

암호화 및 암호 해독에 필요한 키를 생성하려면 아래와 같이 openssl_random_pseudo_bytes() 함수가 필요합니다.

$key = openssl_random_pseudo_bytes(16);

함수 암호화 및 암호 해독을 위해 16바이트 난수를 생성합니다.

2. 암호화 및 복호화

다음으로 openssl_encrypt() 및 openssl_decrypt() 함수를 사용하여 데이터를 암호화하고 복호화할 수 있습니다.

다음은 암호화를 위해 openssl_encrypt() 함수를 사용하는 코드 예제입니다.

$data = 'hello world';
$cipher = 'AES-128-CBC';
$ivlen = openssl_cipher_iv_length($cipher);
$iv = openssl_random_pseudo_bytes($ivlen);
$encrypted_data = openssl_encrypt($data, $cipher, $key, OPENSSL_RAW_DATA, $iv);
$encrypted_data = base64_encode($encrypted_data . ':' . $iv);

코드를 설명하세요.

  • 첫 번째 매개 변수는 암호화해야 하는 데이터입니다.
  • 두 번째 매개 변수는 암호화 알고리즘입니다. AES-128 -CBC, AES-192-CBC 또는 AES-256-CBC를 선택할 수 있습니다.
  • 세 번째 매개변수는 키입니다.
  • 네 번째 매개변수는 암호화 방법입니다. OPENSSL_RAW_DATA 또는 OPENSSL_ZERO_PADDING을 선택할 수 있습니다. 매개변수는 암호화 알고리즘의 강도를 높이는 데 사용되는 초기화 벡터(IV)입니다.
  • 참고: 복호화에 사용하려면 암호화된 암호문 앞에 IV를 추가해야 합니다.

다음은 openssl_decrypt() 함수를 사용한 암호 해독의 코드 예입니다.

$encrypted_data = base64_decode($encrypted_data);
$parts = explode(':', $encrypted_data);
$decrypted_data = openssl_decrypt($parts[0], $cipher, $key, OPENSSL_RAW_DATA, $parts[1]);

코드 설명:

첫 번째 매개 변수는 해독해야 하는 데이터입니다.
  • 두 번째 매개 변수는 암호화 알고리즘입니다. 암호화에 사용해야 합니다. 알고리즘은 동일합니다.
  • 세 번째 매개변수는 암호화에 사용되는 키와 동일해야 합니다.
  • 네 번째 매개변수는 암호화 방법이며 동일해야 합니다. 암호화에 사용되는 방법입니다.
  • 5번째 매개변수는 IV이며 암호화에 사용되는 IV와 동일해야 합니다.
  • 3. 코드 예시

전체 암호화 및 복호화 샘플 코드는 다음과 같습니다.

$key = openssl_random_pseudo_bytes(16);
$data = 'hello world';
$cipher = 'AES-128-CBC';
$ivlen = openssl_cipher_iv_length($cipher);
$iv = openssl_random_pseudo_bytes($ivlen);
$encrypted_data = openssl_encrypt($data, $cipher, $key, OPENSSL_RAW_DATA, $iv);
$encrypted_data = base64_encode($encrypted_data . ':' . $iv);
$encrypted_data = base64_decode($encrypted_data);
$parts = explode(':', $encrypted_data);
$decrypted_data = openssl_decrypt($parts[0], $cipher, $key, OPENSSL_RAW_DATA, $parts[1]);
echo $decrypted_data;

코드를 실행한 후 출력되는 내용은 다음과 같습니다.

hello world

4. 요약

이 글에서는 PHP를 사용하여 구현하는 방법을 소개합니다. AES 대칭 암호화 기술에는 키 생성, 암호화, 암호 해독 및 기타 작업이 포함됩니다. AES 대칭 암호화 알고리즘은 현재 가장 널리 사용되는 암호화 알고리즘 중 하나이며 높은 보안성과 다양한 응용 분야를 갖추고 있습니다. 이 기사가 AES 대칭 암호화 기술을 이해하고 적용하는 데 도움이 되기를 바랍니다.

위 내용은 PHP는 AES 대칭 암호화 기술을 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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