php中rsa生成公私钥和加解密

Posted Manta Tao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php中rsa生成公私钥和加解密相关的知识,希望对你有一定的参考价值。

php中rsa生成公私钥和加解密

注意:php使用RSA时需要开启openssl扩展

生成公私钥

//创建公私钥
$res = openssl_pkey_new();

//获取私钥
openssl_pkey_export($res, $private_key);

//获取公钥
$public_key = openssl_pkey_get_details($res)[\'key\'];

//组合rsa
$rsa = [
    \'public_key\' => $public_key,
    \'private_key\' => $private_key,
];

echo "<pre/>";
var_dump($rsa);
exit;

结果:

rsa加解密

这里把上面获取的公私钥分别保存到变量 $public_key,$private_key

公钥加密,私钥解密

/**
 * 公钥加密
 */
$data = \'rsa加密解密\';

//解析公钥
$res = openssl_pkey_get_public($public_key);

//使用公钥加密数据
openssl_public_encrypt($data, $crypted, $res);

echo "<pre/>";
var_dump($crypted);
exit;

加密后结果:

/**
 * 私钥解密
 */

//解析私钥
$res = openssl_pkey_get_private($private_key);

//使用私钥解密数据
openssl_private_decrypt($crypted, $decrypted, $res);


echo "<pre/>";
var_dump($decrypted);
exit;

解密后结果:

私钥加密,公钥解密

/**
 * 私钥加密
 */
$data = \'rsa加密解密\';

//解析私钥
$res = openssl_pkey_get_private($private_key);

//使用私钥加密
openssl_private_encrypt($data, $crypted, $res);

/**
 * 公钥解密
 */

//解析公钥
$res = openssl_pkey_get_public($public_key);

openssl_public_decrypt($data, $decrypted, $res);


echo "<pre/>";
var_dump($decrypted);
exit;

结果和公钥加密,私钥解密差不多,这里就不截图了

使用场景

私钥加密,公钥解密: 用于签名

公钥加密,私钥解密: 用于加解密

关于使用场景这篇文章说的比较好:https://blog.csdn.net/bandaoyu/article/details/83997398

以上是关于php中rsa生成公私钥和加解密的主要内容,如果未能解决你的问题,请参考以下文章

RSA公私钥和签名、验签过程

Java中使用OpenSSL生成的RSA公私钥进行数据加解密

java中RSA用私钥加密公钥解密问题

android rsa加解密私钥和公钥怎么用

Java & PHP & Javascript 通用 RSA 加密 解密 (长字符串)

前端RSA密钥生成和加解密window.crypto