공개 키 주로 공개 키와 개인 키를 통해 비대칭 암호화하려면 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이다 }는 다른 { 다이 ( '암호 해독 실패 "); }