一:生成 RSA 的私钥和公钥
1:RSA 私钥生成
$resource = openssl_pkey_new();
openssl_pkey_export($resource, $privateKey);
echo($privateKey);
2:RSA 公钥生成
$resource = openssl_pkey_new();
$detail = openssl_pkey_get_details($resource);
$publicKey = $detail['key'];
echo($publicKey);
留神:
如果在生成私钥和公钥时呈现如下提醒:
须要将你的 php 环境下的 openssl.cnf 文件地址加到零碎环境变量中
减少变量名 OPENSSL_CONF,变量值为 openssl.cnf 文件地址
二:RSA 实现私钥加密和公钥解密
1:RSA 私钥加密
$key = '123';// 须要加密的字符串
$pkey=openssl_pkey_get_private($privateKey);//$privateKey 为私钥字符串
openssl_private_encrypt($key, $encryptedData, $pkey);
$encryptedData = base64_encode($encryptedData);
echo($encryptedData);
2:RSA 公钥解密
$pkey = openssl_pkey_get_public($publicKey);//$publicKey 为公钥字符串
openssl_public_decrypt(base64_decode($encryptedData), $data, $pkey);//$encryptedData 为私钥加密串
echo($data);
三:RSA 实现签名和验签
1:私钥签名
$key = '123';// 须要签名的字符串
$pkey=openssl_pkey_get_private($privateKey);//$privateKey 为私钥字符串
openssl_sign($key, $signature,$privateKey);
openssl_free_key($pkey);
$signature = base64_encode($signature);
echo($signature);
2:公钥验签
$pkey = openssl_pkey_get_public($publicKey);// 公钥字符串
$verify = openssl_verify($key, base64_decode($signature),$publicKey);//$key 为须要签名的字符串 //$signature 为签名后字符串
openssl_free_key($pkey);
echo($verify);
依据如上咱们就能够实现 RSA 的加密解密和应用 RSA 的私钥公钥实现签名和验签性能了!