折雨的天空

新浪微薄腾讯微薄

最新碎语:最近霉到了住。哎。。。

您的位置:折雨的天空 >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非对称加密算法加密通信数据

分享到:

发表评论

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