非对称加密:只加密不解密
对称加密:可加密可解密
公钥与私钥:
- 公钥和私钥的关系 是一对一的关系
- 公钥是用来加密的 私钥是用来解密的
- 公钥存在客户端 可以给任何人看
私钥存在服务器端 只有内部人员可以看 私钥里有公钥的信息 - 在app里 公钥还作为身份标识
秘钥的实现:
一、环境的配置:
新建变量名为:OPENSSL_CONF
变量值为:..\..\Apacche\conf\openssl.cnf
在Path内引入php的三个环境变量(php_openssl、ssleay32、libeay32)
二、代码的实现 (windows)
//配置 $config = [ "config" => 'D:\phpStudy\Apache\conf\openssl.cnf', "digest_alg" => "sha512", "private_key_bits" => 4096, "private_key_type" => OPENSSL_KEYTYPE_RSA, ]; //初始化 $res = openssl_pkey_new($config); // 生成私钥并写入文件 openssl_pkey_export($res, $privKey,null,$config); file_put_contents('./private.txt',$privKey); // 生成公钥 $key_detail = openssl_pkey_get_details($res)['key']; file_put_contents('./private.txt',$key_detail); //需要加密的字符串 $data = 'A string that needs to be encrypted'; // 公钥加密 openssl_public_encrypt($data, $encrypted, $key_detail); // 私钥解密 openssl_private_decrypt($encrypted, $decrypted, $privKey); //输出解密的字符串 echo $decrypted;