折雨的天空

博客介绍:本博客当前共有文章【968】篇,总阅读量【5,158,430】次,第一篇博客发表于【2011年04月06日 10时34分】,距今已【4978】天,感谢您的使用!

您的位置:折雨的天空 >php开发> PHP使用RSA非对称加密算法加密通信数据

PHP使用RSA非对称加密算法加密通信数据

1、JS插件

在官网下载js,官网版本库:

https://github.com/travist/jsencrypt

引入bin下的一个js文件即可。


<script src="js/jsencrypt.min.js"></script>

2、提交数据时,进行加密


var encrypt = new JSEncrypt();
//使用公钥进行加密
encrypt.setPublicKey($("#public_key").val());
//加密
phone_data=encrypt.encrypt($("#phone").val());

3、PHP端,开启openssl,使用私钥进行解密


openssl_private_decrypt(base64_decode($string),$data,$pi_key);//私钥解密

注意事项:

网上代码:


https://www.cnblogs.com/wt645631686/p/8390936.html


PHP部分的生成私钥和公钥的部分可以直接用,但是生成私钥的地方有问题,主要还是openssl.cnf文件的配置问题。

windows下会出问题,而linux下不会,windows下的openssl.cnf文件默认在C盘,而我们的文件实际存放在PHP的ext目录下。


解决办法:


$config = array(
                "digest_alg"        => "sha512",
                "private_key_bits"     => 4096,           //字节数  512 1024 2048  4096 等
                "private_key_type"     => OPENSSL_KEYTYPE_RSA,   //加密类型
                "config"               => "***/php7.3.4/extras/ssl/openssl.cnf",
            );


$res = openssl_pkey_new($config);
        if ( $res == false ){
            return false;
        }
        openssl_pkey_export($res, $private_key, null, $config);
        $public_key = openssl_pkey_get_details($res);
        $public_key = $public_key["key"];
        file_put_contents($path."/cert_public.key", $public_key);
        file_put_contents($path."/cert_private.pem", $private_key);

注意:

openssl_pkey_export和openssl_pkey_export 两个函数都需要指定config,否则私钥会生成失败。

------------正 文 已 结 束, 感 谢 您 的 阅 读 (折雨的天空)--------------------

转载请注明本文标题和链接:《PHP使用RSA非对称加密算法加密通信数据

奖励一下

取消

分享不易,烦请有多多打赏,如您也困难,点击右边关闭即可!

扫码支持
扫码打赏,5元,10元,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

-秒后自动关闭,如已打赏,或者不愿打赏,请点击右上角关闭图标。

发表评论

路人甲 表情
看不清楚?点图切换