不多BB;看代碼
針對windows系統如何解決openssl_pkey_export(): cannot get key from parameter 1這個問題
https://www.cnblogs.com/wadhf/p/12041267.html
<?php
$config = array(
"digest_alg" => "sha512",
"private_key_bits" => 4096, //字節數 512 1024 2048 4096 等 ,不能加引號,此處長度與加密的字符串長度有關係,可以自己測試一下
"private_key_type" => OPENSSL_KEYTYPE_RSA, //加密類型
);
//創建資源
$res = openssl_pkey_new($config);
//提取私鑰
openssl_pkey_export($res, $private_key);
//生成公鑰
$public_key = openssl_pkey_get_details($res);
// var_dump($public_key);
$public_key=$public_key["key"];
//顯示數據
var_dump($private_key); //私鑰
echo "<br/>";
var_dump($public_key); //公鑰
echo "<br/>";
//要加密的數據
$data = "http://www.cnblogs.com/wt645631686/";
echo '加密的數據:'.$data."\r\n";
echo "<br/>";
//私鑰加密後的數據
openssl_private_encrypt($data,$encrypted,$private_key);
//加密後的內容通常含有特殊字符,需要base64編碼轉換下
$encrypted = base64_encode($encrypted);
echo "私鑰加密後的數據:".$encrypted."\r\n";
echo "<br/>";
//公鑰解密
openssl_public_decrypt(base64_decode($encrypted), $decrypted, $public_key);
echo "公鑰解密後的數據:".$decrypted,"\r\n";
echo "<br/>";
//----相反操作。公鑰加密
openssl_public_encrypt($data, $encrypted, $public_key);
$encrypted = base64_encode($encrypted);
echo "公鑰加密後的數據:".$encrypted."\r\n";
echo "<br/>";
openssl_private_decrypt(base64_decode($encrypted), $decrypted, $private_key);//私鑰解密
echo "私鑰解密後的數據:".$decrypted."n";
echo "<br/>";
echo "---------------------------------------分割線---------------------------------------";
echo "<br/>";
?>