$configargs = array(
'config' => 'C:\Users\chengxt\Desktop\PHPnow-1.5.6\PHPnow-1.5.6\Apache-22\bin\openssl.cnf', //valid openssl.cnf
// 'digest_alg' => 'md5',
// 'x509_extensions' => 'v3_ca',
// 'req_extensions' => 'v3_req',
// 'private_key_bits' => 1024,
// 'private_key_type' => OPENSSL_KEYTYPE_RSA,
// 'encrypt_key' => false,
);
$plaintext = "Hello";
//create the keypair
$res=openssl_pkey_new($configargs);
if(empty($res)){
echo "error: no key was generated by openssl_pkey_new()";
echo openssl_error_string();
}else{
echo "a private key was generated by openssl_pkey_new()";
}
//get private key
openssl_pkey_export($res, $privkey,null,$configargs);
//$privkey = openssl_pkey_get_private($pem); //get key from pem format data, $pem = file path or pem string
//get public key
$pubkey=openssl_pkey_get_details($res);
$pubkey=$pubkey["key"];
//encrypt & decrypt
openssl_public_encrypt($plaintext,$crypted,$pubkey);
openssl_private_decrypt($crypted,$decrypted,$privkey);
//output key file
file_put_contents("pub.key",$pubkey);
file_put_contents("pri.key",$privkey);
//print test result
echo "<h1>Private Key</h1><pre>$privkey</pre>";
echo "<h1>Public Key</h1><pre>$pubkey</pre>";
echo "<h1>Plaintext</h1><pre>$plaintext</pre>";
echo "<h1>Crypted</h1><pre>$crypted</pre>";
echo "<h1>Decrypted</h1><pre>$decrypted</pre>";php 中生成公私钥及加解密过程
最新推荐文章于 2024-06-23 07:30:00 发布
本文演示了如何使用PHP的openssl扩展来生成密钥对,并利用这些密钥进行数据加密与解密的过程。具体步骤包括创建RSA密钥对、导出私钥、获取公钥详情、使用公钥加密明文以及用私钥解密密文。
2万+

被折叠的 条评论
为什么被折叠?



