公钥用于加密,私钥用于解密。
留意:
JS 端测试时,汉字超过 41个汉字将加密失败,普通字符,长度应该限制在 118以内。因此,对于较长内容,你需要对其切割。
1、生成私钥
# 默认存储在当前目录下
openssl genrsa -out rsa_1024_priv.pem 1024
2、生成公钥
openssl rsa -pubout -in rsa_1024_priv.pem -out rsa_1024_pub.pem
3、HTML 示例
4、PHP 端解密
openssl_pkey_get_private 函数使用时,参数如果为私钥文件名,则格式必须为:file://path/to/file.pem。
或者直接为私钥内容:file_get_contents(‘./rsa_1024_priv.pem’)。
解密数据时,需要使用base64_decode函数解码,同理加密数据时,对加密后的数据,需要使用base64_encode函数编码。
// 公钥加密后内容 $pwd = 'UXuaP08GfhRlptFXgx2IS+/N/h62wZOXmGw9pfkoYW/CZzhElCm23KLqN0nMVVo1Sp9WPObQwBqABjzGwO1i6pUvpA1I53jJcnoZkQSzmkQtKgoHd/7bWdD/sNINx4Ehz26RYMdaoPB2gLGycE9fbzpD6OWaiHZHA47jUv1/3XY='; // 读取私钥信息 $privateKey = openssl_pkey_get_private(file_get_contents('./rsa_1024_priv.pem')); // 使用私钥解密 $realPW = ''; $ok = openssl_private_decrypt(base64_decode($pwd), $realPW, $privateKey, OPENSSL_PKCS1_PADDING); var_dump($ok); var_dump($realPW);
相关: