PHP 비대칭 암호화 동작을 구현하려면 openssl

공개 키 주로 공개 키와 개인 키를 통해 비대칭 암호화하려면 openssl은, 암호화, 개인 공용 또는 개인 키 암호화 및 암호 해독을 해독한다.

PHP의 1은 OpenSSL 및 OpenSSL을 확장

길이 및 암호 보호를 생성 할 때, 개인 키가 지정 될 수있는 비밀 키를 생성하려면 openssl genrsa의 RSA 2 비밀 키를 생성

하려면 openssl genrsa -out rsa_private_key.pem 1024

처리 RSA RSA 키 명령 및 인쇄 정보 형식 변환 : (3)는 공개 키 생성

하려면 openssl RSA -in rsa_private_key.pem -pubout -out rsa_public_key.pem

여기 4. 우리는 개인 키 암호화를 사용, 공개 키 암호를 해독하기

<? PHP 
/ ** 
 * 키 파일 경로 
 * / 
$ privateKeyFilePath = 'rsa_private_key.pem'; 
/ ** 
 * 루트 공개 키 파일 
 * / 
$ publicKeyFilePath = 'rsa_public_key.pem'; 
extension_loaded ( 'OpenSSL이') 또는 ( 'PHP는 OpenSSL이 확장 된 지원이 필요합니다') 죽을 
( '공공 또는 민간 파일 경로가 올바르지')합니다 (file_exists ($ privateKeyFilePath) && file_exists ($ publicKeyFilePath를)) 또는 다이 
/ ** 
 * 자원 유형은 개인 생성 키, 개인 키 파일이 손상된 경우, openssl_pkey_get_private 기능 false로 반환 
 * / 
$의 PrivateKey = openssl_pkey_get_private (file_get_contents ($ privateKeyFilePath)); 
/ ** 
 키 파일이 손상된 경우, 공개 키 생성 * 리소스 유형, openssl_pkey_get_public 함수가 반환 false로 
 * / 
$ = openssl_pkey_get_public 공개 키 (file_get_contents ($ publicKeyFilePath)); 
( '공용 또는 사용할 수없는 개인') ($의 PrivateKey && $ 공개 키) 또는 다이;
/ ** 
 * 원시 데이터 
 * /
$ originalData = '하하 전에 암호화'] 
/ ** 
 * 전송을위한 네트워크를 통해 암호화 된 데이터 이후 
 * / 
$ EncryptData = ''; 
에코의 원래 데이터 ', $ originalData이 값 PHP_EOL이다 
///// ///////////////////////////// ///////////////// 개인 키 암호화 //////////////// 
IF (openssl_private_encrypt ($ originalData, EncryptData $, $의 PrivateKey)) { 
    / ** 
     * 암호화 전송 또는 쉽게 URL이 base64_encode 후 인쇄되거나 인쇄 될 수있다 깨진 
     * / 
    ;의 base64_encode ($ EncryptData), 값이 PHP_EOL입니다 : 에코 '성공 암호화로합니다 (base64_encode 후) 암호화 된 데이터' 
다른 {} 
    ; 다이 ( '암호화 실패') 
} 
/ ** 
 * 데이터를 나중에 해독 
 * / 
$ DecryptData = '';
////////////////////////////////// 암호를 해독 할 수있는 공개 키 //////////// ///////////////////// 
IF (openssl_public_decrypt ($ EncryptData, decryptData $, $ 공개 키)) { 
    에코 '암호 해독에 성공, 복호화 된 데이터가', $ decryptData ,, 값은 PHP_EOL이다 
}는 다른 { 
    다이 ( '암호 해독 실패 "); 
}

추천

출처www.cnblogs.com/liyuchuan/p/11627016.html