我很难找到关于使用私钥/公钥系统进行异步加密/解密的帮助,而我需要它来创建使用循环计费的信用卡模块。
你要是用普通的“同步”或双向加密,那真是傻了,所以整个 mcrypt 库都不会有用。
但事实证明,OpenSSL 非常容易使用……但是它的文档非常少,以至于看起来它会难以置信地难用。
所以我就把我一天的破解成果分享给大家——希望对你有用!
<?php
if (isset($_SERVER['HTTPS']) )
{
echo "SECURE: 此页面通过安全连接访问。<br><br>";
}
else
{
echo "UNSECURE: 此页面通过不安全连接访问。<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>";
?>
感谢文档中其他贡献者让这一过程不那么痛苦。
请注意,您需要使用这些函数来生成一次密钥 - 将您的私钥离线保存以进行解密,并将您的公钥放在您的脚本/配置文件中。如果您的数据被泄露,您无需担心加密后的内容或公钥,真正重要的是私钥和明文。
祝你好运!