ठीक है, ठीक है, यह मेरी पहली बार एक परियोजना पर एन्क्रिप्शन के साथ काम कर रहा है। मैं एसएसएल के लिए अपने होस्टिंग प्रदाता का उपयोग कर रहा हूं, लेकिन मैं संवेदनशील डेटाबेस के हिस्सों को एन्क्रिप्ट करना भी चाहता हूं। इसके लिए, मुझे ओपनएसएसएल का उपयोग करने के लिए कहा गया था। मैं इसे अपने लोकहोस्ट (डब्ल्यूएएमपी) पर परीक्षण कर रहा हूं, और ओपनएसएसएल स्थापित किया है और PHP और अपाचे एसएसएल मोड चालू कर दिया है। ठीक है, इसलिए मैं ट्यूटोरियल का पालन कर रहा हूं और कई सुझाए गए तरीकों का उपयोग करके, सार्वजनिक कुंजी उत्पन्न करने और इसे फ़ाइल के रूप में स्टोर करने में सक्षम हूं। किसी कारण से, मैं निजी कुंजी उत्पन्न नहीं कर सकता। मुझे लगता है कि मैं कोशिश की है कोड के दो संस्करण पोस्ट करेंगे:ओपनएसएसएल निजी कुंजी नहीं बनाएगा?
// 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;
?>
यह एक public.key फ़ाइल उत्पन्न करता है, लेकिन मुझे चेतावनी "openssl_pkey_export_to_file(): पैरामीटर 1 से कुंजी नहीं मिल सकता है:" प्रदान करता है और "openssl_pkey_get_details () पैरामीटर 1 संसाधन, बूलियन होने की अपेक्षा करता है। "
मैं भी एक वैकल्पिक पद्धति की कोशिश की:
$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;
जब कोशिश कर रहा यह, सब कुछ गूंज माना जाता दुर्भाग्य से मेरी परिणाम एक खाली निजी कुंजी, एक ठीक सार्वजनिक कुंजी, सादा पाठ, और एन्क्रिप्टेड पाठ, और एक त्रुटि थी डिक्रिप्ट करने के लिए: "openssl_private_decrypt(): कुंजी पैरामीटर मान्य निजी कुंजी नहीं है"
स्पष्ट रूप से, मुझे निजी कुंजी निर्माण में कोई समस्या है। मैंने इंटरनेट को पूरी तरह से खोजा है और इसे ठीक करने में सक्षम नहीं हूं, भले ही मैंने सरल कोड लागू किया है जो हर किसी के लिए काम करता है।
अग्रिम धन्यवाद, एली Zeitouni
क्या आपने कार्यों के वापसी मूल्य की जांच की है? – doptimusprime