2012-06-06 4 views
2

오류가 발생했습니다 Warning: openssl_get_publickey() [function.openssl-get-publickey]: Don't know how to get public key from this private key on line 5 개인 키에서 공개 키를 가져 오는 중입니다. 여기 내 PHP 코드는 다음과 같습니다.PHP OpenSSL 오류

<?php 
$privatekeyorig = openssl_pkey_new(); 
openssl_pkey_export($privatekeyorig,$privatekey); 
echo '<b>Private Key:</b> ' . $privatekey . '<br>'; 
$publickey = openssl_get_publickey($privatekeyorig); 
echo '<b>Public Key:</b> ' . $publickey . '<br>'; 
?> 

PHP 설명서에 따르면 올바르게 수행하고 있습니다. 누구든지 오류를 발견합니까? 도와 주시면 대단히 감사하겠습니다!

답변

1

체크 아웃의 마지막 코멘트 http://php.net/manual/en/function.openssl-pkey-new.php

바로 위 전 주석에서 [업데이트] : 그것은 당신에게 텍스트 공개 키를 제공하기 위해 내 시스템에서 작동 :

// Create the keypair 
$res=openssl_pkey_new(); 

// Get private key 
openssl_pkey_export($res, $privkey); 

// Get public key 
$pubkey=openssl_pkey_get_details($res); 
$pubkey=$pubkey["key"]; 
+0

나는 이미 그것을 생성 한 개인 키와 마찬가지로 일반 텍스트 키로 키를 인증서로 내보내고 있습니다. –

+0

@ethanh 지난번의 코멘트가 더 유용합니다. 나는 대답을 업데이트했다. – walrii

+0

이 답변에 문제가 있습니까? 나는 그것이 왜 투표로 내려 졌는지 궁금합니다. – walrii

2

내 권장 사항은 phpseclib, a pure PHP RSA implementation입니다. 예.

<?php 
include('Crypt/RSA.php'); 

$rsa = new Crypt_RSA(); 
$rsa->loadKey('...'); 

$privatekey = $rsa->getPrivateKey(); 
$publickey = $rsa->getPublicKey(); 
?> 
+0

불행히도 내 호스트에 아무것도 설치할 수 없으며 OpenSSL이 이미 설치되어 있으므로 제대로 작동 할 것으로 생각됩니다. 또한 비대칭 암호화가 필요하므로 mcrypt를 사용할 수 없습니다. –

+2

아무 것도 설치할 필요가 없습니다. PHP 파일 만 업로드하면 완료됩니다. 이것이 phpseclib의 핵심입니다. 개발자는 bcmath 또는 gmp조차 필요하지 않도록하기 위해 큰 고통을 겪었습니다. 사용 가능하다면 속도로 사용되지만 필수는 아닙니다. – neubert