Okay, cóż, po raz pierwszy pracuję z szyfrowaniem nad projektem. Korzystam z mojego dostawcy hostingu dla protokołu SSL, ale chcę również szyfrować fragmenty bazy danych, które są poufne. W tym celu powiedziano mi, aby korzystać z OpenSSL. Testuję to na moim lokalnym hoście (WAMP), i zainstalowałem OpenSSL i włączyłem modów PHP i Apache SSL. Okej, więc śledziłem tutoriale i, używając kilku sugerowanych metod, udało się wygenerować klucz publiczny i zapisać go jako plik. Z jakiegoś powodu nie mogę wygenerować klucza prywatnego. Ja po dwie wersje kodu Próbowałem:OpenSSL nie tworzy kluczy prywatnych?
// 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;
?>
To generuje plik public.key, ale zapewnia mi ostrzeżenia „openssl_pkey_export_to_file(): nie można dostać klucz od parametru 1:” i "openssl_pkey_get_details () oczekuje, że parametr 1 będzie zasobem, boolowskim. "
Próbowałem również alternatywną metodę:
$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;
Miało to echo wszystko, niestety mój wynik był pusty klucz prywatny, grzywna klucz publiczny, zwykłego tekstu, a zaszyfrowany tekst, a błąd podczas próby do odszyfrowania: "openssl_private_decrypt(): kluczowy parametr nie jest prawidłowym kluczem prywatnym"
Najwyraźniej mam problem z tworzeniem klucza prywatnego. Dokładnie przeszukałem internet i nie udało mi się go naprawić, mimo że zaimplementowałem prosty kod, który wydaje się działać dla wszystkich.
Dzięki z góry, Elie Zeitouni
Czy sprawdziłeś wartość zwrotu funkcji? – doptimusprime