OpenSSL erstellt keine privaten Schlüssel?

Okay, nun, ich arbeite zum ersten Mal mit Verschlüsselung an einem Projekt. Ich verwende meinen Hosting-Provider für SSL, möchte jedoch auch sensible Teile der Datenbank verschlüsseln. Dafür wurde mir gesagt, dass ich OpenSSL verwenden soll. Ich teste es auf meinem localhost (WAMP) und habe OpenSSL installiert und die PHP- und Apache-SSL-Mods aktiviert. Okay, also habe ich Tutorials befolgt und mit verschiedenen vorgeschlagenen Methoden den öffentlichen Schlüssel generiert und als Datei gespeichert. Aus irgendeinem Grund kann ich den privaten Schlüssel nicht generieren. Ich werde zwei Versionen von Code posten, die ich ausprobiert habe:

// generate private key
$privateKey = openssl_pkey_new(array(
    'private_key_bits' => 1024,
    'private_key_type' => OPENSSL_KEYTYPE_RSA,
));
// write private key to file
openssl_pkey_export_to_file($privateKey, 'private.key');
// generate public key from private key
$publicKey = openssl_pkey_get_details($privateKey);
// write public key to file
file_put_contents('public.key', $publicKey['key']);
// clear key
echo $privateKey;

?>

Dadurch wird eine public.key-Datei generiert, es werden jedoch die Warnungen "openssl_pkey_export_to_file (): Schlüssel kann nicht von Parameter 1 abgerufen werden:" und "openssl_pkey_get_details () erwartet, dass Parameter 1 eine Ressource ist, boolesch."

Ich habe auch eine alternative Methode ausprobiert:

$config = array(
    "config" => "E:/wamp/bin/apache/apache2.2.22/conf/openssl.cnf",
    "digest_alg" => "sha512",
    "private_key_bits" => 1024,
    "private_key_type" => OPENSSL_KEYTYPE_RSA,
);

// Create the private and public key
$res = openssl_pkey_new($config);

// Extract the private key from $res to $privKey
openssl_pkey_export($res, $privKey, NULL);
echo "Private Key: ".$privKey;
// Extract the public key from $res to $pubKey
$pubKey = openssl_pkey_get_details($res);
$pubKey = $pubKey["key"];
echo "Public Key: ".$pubKey;
$data = 'plaintext data goes here';
echo "Data: ".$data;
// Encrypt the data to $encrypted using the public key
openssl_public_encrypt($data, $encrypted, $pubKey);
echo "Encrypted: ".$encrypted;
// Decrypt the data using the private key and store the results in $decrypted
openssl_private_decrypt($encrypted, $decrypted, $privKey);

echo "Decrypted: ".$decrypted;

Dies sollte alles wiedergeben, leider war mein Ergebnis ein leerer privater Schlüssel, ein feiner öffentlicher Schlüssel, Klartext und verschlüsselter Text und ein Fehler beim Entschlüsseln: "openssl_private_decrypt (): Schlüsselparameter ist kein gültiger privater Schlüssel"

Ich habe offensichtlich ein Problem mit der Erstellung von privaten Schlüsseln. Ich habe das Internet gründlich durchsucht und konnte es nicht reparieren, obwohl ich einfachen Code implementiert habe, der für alle anderen zu funktionieren scheint.

Vielen Dank im Voraus, Elie Zeitouni

Antworten auf die Frage(5)

Ihre Antwort auf die Frage