欢迎访问宙启技术站
智能推送

使用PHP函数实现RSA加密和解密

发布时间:2023-06-13 08:21:43

RSA是一种非对称加密算法,目前被广泛应用在网络安全中,它的特点是加密和解密使用不同的密钥,其中一个密钥是公开的,另一个密钥是私有的。

在PHP中,我们可以使用openssl扩展库来实现RSA加密和解密。

首先,我们需要生成一对公私密钥:

//生成密钥
$rsaKey = openssl_pkey_new([
    'private_key_bits' => 1024, //私钥位数
    'private_key_type' => OPENSSL_KEYTYPE_RSA //算法类型
]);

//获取私钥
openssl_pkey_export($rsaKey, $privateKey);

//获取公钥
$publicKeyData = openssl_pkey_get_details($rsaKey);
$publicKey = $publicKeyData['key'];

接下来,我们可以使用公钥加密和私钥解密信息:

//信息加密
$plainText = 'Hello World';
$encryptedText = '';
openssl_public_encrypt($plainText, $encryptedText, $publicKey);
echo "加密后的信息:" . base64_encode($encryptedText) . "
";

//信息解密
$decryptedText = '';
openssl_private_decrypt($encryptedText, $decryptedText, $privateKey);
echo "解密后的信息:" . $decryptedText . "
";

在上面的代码中,我们首先定义了一个待加密的信息,然后使用openssl_public_encrypt函数使用公钥进行了加密,并将加密后的结果使用base64编码后输出。

然后,我们使用openssl_private_decrypt函数对加密后的信息进行解密,得到了最终的结果。

需要注意的是,openssl_public_encrypt和openssl_private_decrypt函数的第三个参数都是引用类型,加密后得到的密文和解密后得到的明文都保存在其中。

除了使用openssl扩展库来实现RSA加密和解密,我们还可以使用第三方库如phpseclib。它提供了更加丰富的功能和易用的接口,具体使用方法可以参考官方文档。