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

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

WBOY
풀어 주다: 2023-06-18 09:36:01
원래의
3779명이 탐색했습니다.

RSA 비대칭 암호화 기술은 현재 가장 인기 있고 안전한 암호화 방법 중 하나입니다. 널리 사용되는 프로그래밍 언어인 PHP는 RSA 암호화 구현에 있어서도 고유한 이점을 가지고 있습니다. 이 기사에서는 독자들에게 PHP를 사용하여 RSA 비대칭 암호화 기술을 구현하는 방법을 소개합니다.

1. RSA 알고리즘이란

RSA 알고리즘은 비대칭 암호화 기술로 일반적으로 데이터 암호화 및 디지털 서명에 사용됩니다. 보안은 주로 정수론 문제, 즉 매우 짧은 시간에 매우 큰 정수를 인수분해하는 어려움에 기반합니다.

RSA 알고리즘의 암호화 과정은 다음과 같습니다.

  1. 두 개의 큰 소수 p와 q를 선택하고 그 곱을 계산합니다. n = p*q
  2. ψ(n) = (p-1)*( q-1 );
  3. e와 Φ(n)이 상대적으로 소수가 되도록 정수 e를 선택합니다.
  4. e와 d가 ed 1(mod Φ(n))을 충족하도록 d를 계산합니다.
  5. 공개 키는 다음과 같습니다. (n,e) , 개인 키는 (n, d)입니다.
  6. 데이터를 암호화할 때는 공개 키에 있는 e를 사용하여 암호화하고, 데이터를 복호화할 때는 개인 키에 있는 d를 사용하여 복호화합니다.

2. PHP를 사용하여 RSA 알고리즘 구현

PHP를 사용하여 RSA 알고리즘을 구현하려면 두 가지 중요한 타사 라이브러리인 phpseclib 및 OpenSSL을 사용해야 합니다. 전자는 주로 프런트 엔드 암호화에 사용되고 후자는 백그라운드 암호 해독에 사용됩니다. 이 두 라이브러리의 사용법은 아래에 소개되어 있습니다.

2.1 phpseclib 라이브러리

phpseclib는 PHP에서 구현된 암호화 및 암호 해독 클래스 라이브러리입니다. RSA, DSA 및 ECDSA를 포함한 여러 비대칭 암호화 알고리즘을 지원합니다. RSA 암호화를 위해 phpseclib를 사용하는 경우 다음 단계를 수행해야 합니다.

  1. phpseclib 라이브러리 소개:
require_once('Crypt/RSA.php');
로그인 후 복사
  1. 공개 및 개인 키 생성:
$rsa = new Crypt_RSA();
$rsa->setPublicKeyFormat(CRYPT_RSA_PUBLIC_FORMAT_PKCS1);
$rsa->setPrivateKeyFormat(CRYPT_RSA_PRIVATE_FORMAT_PKCS1);
$keys = $rsa->createKey();
file_put_contents('public_key.pem', $keys['publickey']);
file_put_contents('private_key.pem', $keys['privatekey']);
로그인 후 복사
  1. 공개 키 암호화 사용:
$data = 'hello, world';
$rsa = new Crypt_RSA();
$rsa->loadKey(file_get_contents('public_key.pem'));
$ciphertext = $rsa->encrypt($data);
로그인 후 복사
  1. 암호 해독 개인 키 사용:
$rsa = new Crypt_RSA();
$rsa->loadKey(file_get_contents('private_key.pem'));
$plaintext = $rsa->decrypt($ciphertext);
로그인 후 복사

2.2 OpenSSL 라이브러리

OpenSSL 라이브러리는 다양한 암호화 알고리즘과 SSL/TLS 프로토콜의 구현을 포함하는 오픈 소스 라이브러리입니다. PHP에서는 openssl 라이브러리를 확장하여 이 라이브러리를 사용할 수 있습니다. OpenSSL을 사용하여 RSA 암호화를 구현하는 단계는 다음과 같습니다.

  1. 개인 키 파일 생성:
$config = array(
    "digest_alg" => "sha512",
    "private_key_bits" => 2048,
    "private_key_type" => OPENSSL_KEYTYPE_RSA,
);
$private_key = openssl_pkey_new($config);
openssl_pkey_export_to_file($private_key, "private.key");
로그인 후 복사
  1. 공개 키 파일 생성:
$public_key = openssl_pkey_get_details($private_key);
$public_key = $public_key["key"];
file_put_contents("public.key", $public_key);
로그인 후 복사
  1. 공개 키를 사용하여 암호화:
$data = 'hello, world';
openssl_public_encrypt($data, $ciphertext, $public_key);
로그인 후 복사
  1. 개인 키를 사용하여 해독:
openssl_private_decrypt($ciphertext, $plaintext, $private_key);
로그인 후 복사

3. 요약

PHP를 사용하여 RSA 비대칭 암호화 기술을 구현하면 보다 안전하고 안정적인 데이터 전송 및 보호 솔루션을 제공할 수 있습니다. 이 문서에서는 phpseclib 및 OpenSSL 라이브러리를 사용하여 RSA 알고리즘을 구현하는 단계를 설명합니다. 독자는 자신의 필요에 따라 구현에 적합한 라이브러리를 선택할 수 있습니다. 이를 사용할 때 데이터가 불법적으로 변조되거나 도난당하는 것을 방지하기 위해 개인 키의 보안이 보장되어야 합니다.

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

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿