1、JS插件
在官网下载js,官网版本库:
https://github.com/travist/jsencrypt
引入bin下的一个js文件即可。
<script src="js/jsencrypt.min.js"></script>
var encrypt = new JSEncrypt();
//使用公钥进行加密
encrypt.setPublicKey($("#public_key").val());
//加密
phone_data=encrypt.encrypt($("#phone").val());
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,否则私钥会生成失败。