Hallo allerseits,
Wenn ich auf folgende Weise ein Schlüsselpaar erzeuge und dieses dann zum Ent- und Verschlüsseln benutze, dann funktioniert alles:
// Create the keypair
$res=openssl_pkey_new();
// Get private key
openssl_pkey_export($res, $private_key);
// Get public key
$pubkey=openssl_pkey_get_details($res);
$public_key=$pubkey["key"];
In den Variablen "$private_key" und "$public_key" habe ich die entsprechenden Schlüssel und wenn ich die mit "echo" ausgebe, dann kriege ich sowas, was ja auch erstmal richtig aussieht:
-----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEF.... cwIDAQAB -----END PUBLIC KEY-----
-----BEGIN PRIVATE KEY----- MIIEvgIBADANBgkqhkiG9w0B....Eat5Bl9vbfp5tlRb5 -----END PRIVATE KEY-----
Wenn ich jetzt aber die Keys in den Variablen "$private_key" und "$public_key" nicht neu erzeuge sondern mit den vorher ausgegebenen Strings belege
$private_key = "-----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEF.... cwIDAQAB -----END PUBLIC KEY-----";
$public_key = "-----BEGIN PRIVATE KEY----- MIIEvgIBADANBgkqhkiG9w0B....Eat5Bl9vbfp5tlRb5 -----END PRIVATE KEY----- ";
dannn kriege ich diese beiden Fehler:
"Warning: openssl_public_encrypt(): key parameter is not a valid public key in /www/htdocs/v125289/rsatest.php on line 5"
und
"Warning: openssl_private_decrypt(): key parameter is not a valid private key in /www/htdocs/v125289/rsatest.php on line 11"
Was mache ich falsch, bzw. habe ich hier einen Denkfehler?
Zum Ver- und Entschlüsseln verwende ich einfach diese beiden Methoden, die wie gesagt bei einem neu erzeugten Schlüsselpaar auch funktionieren:
function public_encrypt($plaintext, $public_key)
{
openssl_public_encrypt($plaintext,$crypttext, $public_key);
return(base64_encode($crypttext));
}
function private_decrypt($encryptedext,$private_key)
{
openssl_private_decrypt(base64_decode($encryptedex t), $decrypted, $private_key);
return $decrypted;
}
Vielen Dank für Eure Hilfe.
Wenn ich auf folgende Weise ein Schlüsselpaar erzeuge und dieses dann zum Ent- und Verschlüsseln benutze, dann funktioniert alles:
// Create the keypair
$res=openssl_pkey_new();
// Get private key
openssl_pkey_export($res, $private_key);
// Get public key
$pubkey=openssl_pkey_get_details($res);
$public_key=$pubkey["key"];
In den Variablen "$private_key" und "$public_key" habe ich die entsprechenden Schlüssel und wenn ich die mit "echo" ausgebe, dann kriege ich sowas, was ja auch erstmal richtig aussieht:
-----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEF.... cwIDAQAB -----END PUBLIC KEY-----
-----BEGIN PRIVATE KEY----- MIIEvgIBADANBgkqhkiG9w0B....Eat5Bl9vbfp5tlRb5 -----END PRIVATE KEY-----
Wenn ich jetzt aber die Keys in den Variablen "$private_key" und "$public_key" nicht neu erzeuge sondern mit den vorher ausgegebenen Strings belege
$private_key = "-----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEF.... cwIDAQAB -----END PUBLIC KEY-----";
$public_key = "-----BEGIN PRIVATE KEY----- MIIEvgIBADANBgkqhkiG9w0B....Eat5Bl9vbfp5tlRb5 -----END PRIVATE KEY----- ";
dannn kriege ich diese beiden Fehler:
"Warning: openssl_public_encrypt(): key parameter is not a valid public key in /www/htdocs/v125289/rsatest.php on line 5"
und
"Warning: openssl_private_decrypt(): key parameter is not a valid private key in /www/htdocs/v125289/rsatest.php on line 11"
Was mache ich falsch, bzw. habe ich hier einen Denkfehler?
Zum Ver- und Entschlüsseln verwende ich einfach diese beiden Methoden, die wie gesagt bei einem neu erzeugten Schlüsselpaar auch funktionieren:
function public_encrypt($plaintext, $public_key)
{
openssl_public_encrypt($plaintext,$crypttext, $public_key);
return(base64_encode($crypttext));
}
function private_decrypt($encryptedext,$private_key)
{
openssl_private_decrypt(base64_decode($encryptedex t), $decrypted, $private_key);
return $decrypted;
}
Vielen Dank für Eure Hilfe.
Kommentar