我当时很难找到关于使用私钥/公钥系统进行异步加密/解密的帮助,而我必须为创建使用循环计费的信用卡模块而使用它。
对于这种情况,使用普通的、“同步”或双向加密简直是愚蠢的,因此整个 mcrypt 库将无济于事。
但事实证明,OpenSSL 非常易于使用……然而,它的文档如此稀少,以至于看起来它会非常困难。
因此,我与您分享我一天的破解成果 - 希望您觉得它有用!
<?php
if (isset($_SERVER['HTTPS']) )
{
echo "安全连接: 此页面正在通过安全连接访问。<br><br>";
}
else
{
echo "非安全连接: 此页面正在通过非安全连接访问。<br><br>";
}
$res=openssl_pkey_new();
openssl_pkey_export($res, $privatekey);
$publickey=openssl_pkey_get_details($res);
$publickey=$publickey["key"];
echo "私钥:<BR>$privatekey<br><br>公钥:<BR>$publickey<BR><BR>";
$cleartext = '1234 5678 9012 3456';
echo "明文:<br>$cleartext<BR><BR>";
openssl_public_encrypt($cleartext, $crypttext, $publickey);
echo "密文:<br>$crypttext<BR><BR>";
openssl_private_decrypt($crypttext, $decrypted, $privatekey);
echo "解密后的文本:<BR>$decrypted<br><br>";
?>
非常感谢文档中其他贡献者,使这个过程不那么痛苦。
请注意,您需要使用这些函数生成密钥一次 - 将您的私钥离线保存以进行解密,并将您的公钥放在您的脚本/配置文件中。如果您的数据泄露,您无需担心加密数据或公钥,只有私钥和明文才是真正重要的。
祝您好运!