2011-01-10 9 views
2

Wie kann ich publickey von pem-Datei zu erhalten, die auf rsa 364. installiert crypt (RSA.php) Bibliothek basierend erstellt wird immer noch unter Fehler immerPHP rsa erhalten öffentliche Schlüssel von pem Datei

Fatal error: Call to nicht definierte Methode Crypt_RSA :: loadKey() in C: \ Programme \ Apache Software Foundation \ Apache2.2 \ htdocs \ rsa.php

$file = "C:\key_file.pem"; 
$keypair = Crypt_RSA_KeyPair::fromPEMString(file_get_contents($file)); 
$public_key = $keypair->getPublicKey(); 
$rsa_pub_key = Crypt_RSA_Key::fromString($public_key->toString()); 
$rsa_obj = new Crypt_RSA; 
$verify_status = $rsa_obj->validateSign($text,$recieved_signed_sign, $rsa_pub_key) ? 'valid' : 'invalid'; 

immer Fehler wie Fatal error: Call to undefined Methode PEAR_Error :: getPublicKey() in C: \ Programme \ xxxx \ rsa.php

Erprobtes gleiches Ding openssl_verify. Verify ist rturning 0 Versuchen, Zeichen mit base64_encode mit 384 RSA-Schlüssel erhalten zu überprüfen.

**$base64DecodedStr = base64_decode("A1a0o8JzF7q12Sr4gJvYjslhg5XVA2fWy28.JyohJ05uyiZGyBpqazqb"); 
$status = openssl_verify($msg,$base64DecodedStr,$pub_key);** 

Bitte helfen Sie mir, dieses Problem zu lösen. Danke vielmals.

Antwort

1

Gemäß der Crypt_RSA documentation hat die Crypt_RSA-Klasse keine loadKey() -Methode. Sie passieren den öffentlichen Schlüssel an den Konstruktor als Teil eines assoziativen Arrays von Parametern:

$rsa_obj = new Crypt_RSA(array('public_key' => $publickey)); 
+0

Dank David, änderte ich Code wie unter $ file = "C: \ key_file.pem"; $ keypair = Crypt_RSA_KeyPair :: von PEMString (file_get_contents ($ file)); $ public_key = $ Schlüsselpaar-> getPublicKey(); $ rsa_pub_key = Crypt_RSA_Key :: fromString ($ public_key-> toString()); $ rsa_obj = new Crypt_RSA; $ verify_status = $ rsa_obj-> validateSign ($ text, $ empfangen_signiertes_zeichen, $ rsa_pub_key)? 'gültig': 'ungültig'; Fehler als Fataler Fehler erhalten: Rufen Sie die nicht definierte Methode PEAR_Error :: getPublicKey() in C: \ Programme \ xxxx \ rsa.php – mazheruddin

+1

@mazheruddin auf, überprüfen Sie 'file_get_contents ($ file)' result. Ihr 'Crypt_RSA_KeyPair :: fromPEMString' kann kein Schlüsselpaar von PEMString bekommen, was nur dann der Fall sein kann, wenn etwas mit einer Zeichenfolge, die Sie übergeben haben, nicht funktioniert –

+0

@Rumm, versucht $ fp = fopen ($ file," r "); $ pem_data = fread ($ fp, Dateigröße ($ Datei)); \t fclose ($ fp); hat $ pem_data an fromPEMString func übergeben. immer noch gleichen Fehler in der Lage, $ pem_data zu echo – mazheruddin

0

Meine Empfehlung: Benutzen Sie nicht PEAR Crypt_RSA sondern phpseclib des Crypt_RSA.

PEARs Crypt_RSA ist nicht PKCS # 1-konform, dh mit ihm generierte Signaturen oder Chiffriertexte werden nicht mit anderen Sprachen kompatibel sein, es unterstützt keine passwortgeschützten privaten Schlüssel und wurde jahrelang nicht aktiv gepflegt.

Weitere Informationen über phpseclib:

http://phpseclib.sourceforge.net/

Verwandte Themen