好吧,這是我第一次在一個項目上使用加密技術。我正在使用我的託管服務提供商提供SSL,但我也想要加密部分敏感的數據庫。爲此,我被告知使用OpenSSL。我正在我的本地主機(WAMP)上測試它,並安裝了OpenSSL並打開了PHP和Apache SSL mods。好的,所以我一直在關注教程,並且使用幾種建議的方法,已經能夠生成公鑰並將其作爲文件存儲。出於某種原因,我似乎無法生成私鑰。我會後的代碼兩個版本,我已經試過:OpenSSL不會創建私鑰?
// 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