openssl_verify und "Fehler: 0906D06C: PEM-Routinen: PEM_read_bio: Keine Startzeile"

Ich versuche, die OpenSSL-Funktion zum RSA-Signieren / -Verifizieren in PHP zu verwenden. Wenn ich versuche, @ zu topenssl_verify Wenn ich meinen öffentlichen Schlüssel verwende, wird dieser Fehler angezeigt:error:0906D06C:PEM routines:PEM_read_bio:no start line, aber die Funktion selbst funktioniert ordnungsgemäß (gibt 0 zurück, wenn Nachrichten geändert wurden, und 1, wenn sie intakt sind).openssl_sign funktioniert gut

Wie kann ich es reparieren

erzeit verwende ich einen öffentlichen Schlüssel, der von openssl generiert wurde:

define("SC_MSG_PUBLIC", <<<EOD
-----BEGIN PUBLIC KEY-----
MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBALjPcOckMHDVLiUstcRwwx8kF5PzsiEs
rskyndWisbXMLU9BHomXwL7Qg2L91jE+sNSobkzBDF41CbwDiNlofZUCAwEAAQ==
-----END PUBLIC KEY-----
EOD
);

Haben Sie eine Idee, warum dieser Fehler ausgelöst wird, aber die Dinge funktionieren einwandfrei?

Es wurde versucht, einen öffentlichen Schlüssel aus dem privaten zu generieren und zu verwenden, aber es schien genau dieselbe Fehlermeldung zu geben: -S

$pkey = openssl_pkey_get_private(SC_MSG_PRIVATE);
$keyDetails = openssl_pkey_get_details($pkey);
file_put_contents('c:\publickey', $keyDetails['key']);

Auch habe ich versucht, neuere Versionen von allem (PHP 5.3.1, OpenSSL 1.0.0a) zu installieren - das gleiche Ergebnis. Und ich bin auf Windows.

Antworten auf die Frage(8)

Ihre Antwort auf die Frage