php实现rsa
PHP实现RSA加密解密
RSA是一种非对称加密算法,广泛应用于数据传输加密和数字签名。PHP通过OpenSSL扩展提供RSA支持。
生成RSA密钥对
使用openssl_pkey_new函数生成密钥对:
$config = array(
"digest_alg" => "sha512",
"private_key_bits" => 2048,
"private_key_type" => OPENSSL_KEYTYPE_RSA,
);
$res = openssl_pkey_new($config);
openssl_pkey_export($res, $privateKey);
$publicKey = openssl_pkey_get_details($res);
$publicKey = $publicKey["key"];
RSA加密
使用公钥加密数据:
$data = "敏感数据";
openssl_public_encrypt($data, $encrypted, $publicKey);
$encrypted = base64_encode($encrypted);
RSA解密
使用私钥解密数据:
$encrypted = base64_decode($encrypted);
openssl_private_decrypt($encrypted, $decrypted, $privateKey);
RSA签名验证
生成签名:
openssl_sign($data, $signature, $privateKey, OPENSSL_ALGO_SHA256);
$signature = base64_encode($signature);
验证签名:

$signature = base64_decode($signature);
$valid = openssl_verify($data, $signature, $publicKey, OPENSSL_ALGO_SHA256);
注意事项
密钥长度建议至少2048位以保证安全性 加密数据长度受密钥长度限制,长数据需分段处理或使用混合加密方案 妥善保管私钥,建议存储在安全位置 PHP7.2+版本对OpenSSL函数有更好支持






