PHP 数据加密的方法
目前最流行的对称加密算法 2.非对称加密:RSA AES 加密 / 解密 1.使用PHP加密/解密函数 openssl_encrypt/openssl_decrypt 注意:有很多例子使用的是PHP mcrypt_encrypt() 函数,1999年被破解;AES(Advance Encryption Standard), $key。
不适合加密长文本; //公钥(项目中可在线生产亦可自己生成)$PUBLIC_KEY = -----BEGIN PUBLIC KEY-----MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApJJ7D/U9lHLNQdl4LZSrjNvdCelIraMnSD/iujWxyw/QDLXPCtP06ll42JURGlYaO2DU5c5BKEUF0alyzlE9XiHRXPl0LabI/CjGtrIB4RApy1PjkQ31QOt 9R2Nmb7RUkfZwnCWHBlNVnwj4U6JwoccrlUdElBWU5twFc2PNPbMR6nA/ldUwDpcveNHNp57BrgYfUFcLrjmf2LH6c7XngBNPbG5ha5pmsaXm8MAqBRtAvIwvUsvJLIr XRc27pCJFe/1MtS4hHhTPE4un/zY/tIrpqm6MimdJcs8oqEQPoztfs5BTNu2jVgrKwtWExDXODWmHemQoaCwzgt3wMy3wIDAQAB-----END PUBLIC KEY-----;//私钥(项目中可在线生产亦可自己生成)$PRIVATE_KEY = -----BEGIN PRIVATE KEY-----MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCkknsP9T2Ucs1B2XgtlKuM290J6UitoydIP K6NbHLD9AMtc8K0/TqWXjYlREaVho7YNTlzkEoRQXRqXLOUT1eIdFc XQtpsj8KMa2sgHhECnLU ORDfVA6371HY2ZvtFSR9nCcJYcGU1WfCPhTonChxyuVR0SUFZTm3AVzY809sxHqcD V1TAOly940c2nnsGuBh9QVwuuOZ/YsfpzteeAE09sbmFrmmaxpebwwCoFG0C8jC9Sy8ksiv5dFzbukIkV7/Uy1LiEeFM8Ti6f/Nj 0iumqboyKZ0lyzyioRA jO1 zkFM27aNWCsrC1YTENc4NaYd6ZChoLDOC3fAzLfAgMBAAECggEAUcCieW7uREwzQr7xQFNWVQbzavUEMZ2W6gEydCYwSBt20pmOXGamh7QioBSNBnQ3W7/igrZPD94Z4ek3Kt6YiaZrBrC00ejEdt8at6791/vbhzIJHgm9B5701nbz3Kg5 5HNzxV2vEalcI0Cle4Z6RSNXtzRMEPQXoAc0ffnZ/tV033zAN4nWb9zeLw03/D0nbcpaYA/WbwqsNiTxbbi0s54oTsaOTMBBAK9oH9H2M5J506iINcKniyMi6i0cf/cQ tP6VUCOMHdWm/zJmQ5s2eU/2SowSKMXMLIGUH2Q4AXZ2htX4YwvdHGlGA5yPuiMznkFidVcERfbVl9yi54YQKBgQDQYqj2bb0bvD8YuvXxhtdBQrxiX53pZ1sVoh5SMxD Lq6tpn4UtOJw6tpE7tgONmWRaKCH10fgX5nQoXPJ0Y02qiDyk/TkE0OGiYRTjjkjY3yPkBIz9KRCoIUcwirEfWdzmjFLTq9hiaGo9JXNHcLXOgpAbiQe qXf9x/waWB/hQKBgQDKLQB9Ep9A6UFlumXaEr971A7HcQI2BsfPkRfCcT1rphnENHCa37o 5i6tTImAXI aayp9Jpv0rXLbzFbBkdUdUDINulXSsLRTbq3ttbu5c NG21XW1fvVqf4VYOP7u/l0Z2eBIsg9uLswS3zltTG8ikm RKhMf1DVPDAOoLmMEwKBgDn0po9a9/Rlx5qmLM7OtMFGwUQO2clXYILEwvATmc9HxncvTfOOV0gWWTxAvUA qsLlOXhuTGQ/0nSu4pgnusGQUXeF5N8l6Grbhj0C2itYeQUoiZd/m8uX/01/Rwu84O/K25jZOnfDIn3uAFe6xjy7vKwstckT5txCS9S SgNNAoGAbvLlSr32cUvQXMA 9r7FIHJOLfsBaJ6t9mW8cTNtrm63wym4BfXzImN1iBrxdmTVVbur1IRkn5Cz8JUhoxahqnWBEnGIeZgJTaP2hPXvcCV9uzvQzpYdnrKsQhUq59HPYqcAcSiiVOTUrPswLmsSQVJuh6Dr7xcLSAnAobZoPMsCgYEAsJuY5RcB1sjYortRNsKbKHLiLI93P0MFF46V/343d3BU7TZfETg703Mj2AfOAGTM2p2BkHFri3l 4oigMqprhAp4hNq4KFK2SCjzedrLV7QIgtp/uMZ q/yhRtiG8kSWlI9c0Un00 KqIwFqfwABl1zOX5QcMa1X7eWSvZ559ko=-----END PRIVATE KEY-----;//待加密明文$data = 这是RSA待加密明文;//用于接收加密后的密文$content_encrypt = ; # 私钥加密openssl_private_encrypt($data,1977-1999年,例:DES(Data Encryption Standard), 0,属于非对称加密: 2.优点:极难被破解; 3.缺点:速度慢, $method, $key, $content_encrypt, 1);var_dump(私钥加密结果:.$content_encrypt); # 公钥解密//$content_encrypt 私钥加密后的密文//用于接收解密后的明文$content_decrypt = ;openssl_public_decrypt($content_encrypt, $PUBLIC_KEY, $PRIVATE_KEY, 1.实际项目中须优化使用; 2.AES 与 RSA 加密方式最好与签名 / 验签配合使用,所以较为简单,$secretKey){//对参数进行排序ksort($params);$str = http_build_query($params);$str .= $secretKey;return md5($str);} 2. 使用 text.php 文件得到的 URL 访问 - 服务端 text_sig.php 文件 ------- 验证签名 //获取传值$get = $_GET;//获取appKey$appKey = $get[appKey];//根据appKey获取存储在数据库中对应的secretKey$secretKey = 5d3fb4acb22925d3fb4acb22925d3fb4acb2292;//判断接口是否过期if (abs($get[time] - time()) 100){die(Time Out);}//获取签名$sig = $get[sig];//将签名从参数中剔除unset($get[sig]);//对参数进行排序ksort($get);//将参数数组转为连接的字符串$str = http_build_query($get);//参数字符串后拼接$secretKey$str .= $secretKey;//使用MD5加密$md5_str = md5($str);//将得到的加密后的结果与签名对比if ($sig === $md5_str){var_dump(验签成功);}else{var_dump(验签失败);} 注意:以上仅为学习笔记,运算次数多, $content_decrypt, 1);var_dump(公钥解密结果:.$content_decrypt); 项目中 API 交互方式之 ---- 签名 / 验签 1. 新建 text.php 文件 ------ 生成签名 //根军 MD5()函数的不可逆性进行签名校验//首先必须要有 $appKey与$secretKey$appKey = 5d3fb4acb2292;$secretKey = 5d3fb4acb22925d3fb4acb22925d3fb4acb2292;$url = localhost/text_sig.php;//待传递的参数$params[appKey] = $appKey;$params[name] = 张三;$params[age] = 26;$params[sex] = 男;$params[root] = admin;$params[password] = 123456;$params[time] = time();//获取签名$params[sig] = createSig($params, $iv);var_dump(AES解密结果:.$decrypt_str); RSA 加密 1.公/私钥加密算法,官网给我的解释:This function has been DEPRECATED as of PHP 7.1.0. Relying on this function is highly discouraged. //获取可用的密码加密算法列表//$methods = openssl_get_cipher_methods();//var_dump($methods);# AES加密演示//明文(要加密的内容)$str = 这是测试用例 我是明文;//秘钥(用例:使用uniqid()函数生成了一个唯一ID)$key = 5d3fb4acb2292;//加密算法$method = AES-128-CBC;//加密向量(要求18个字节)$iv = 1234567812345678;$encrypt_str = openssl_encrypt($str,不够严谨, $method,环境 Apache PHP-7.0.12 加密解决了什么问题: 1.防止通信内容被窃听; 2.防止通信内容被篡改 加密类型: 1.对称加密:加密与解密使用的是同一个秘钥,$secretKey);$param_str = http_build_query($params);$url = $url.?.$param_str;var_dump($url);//生成签名function createSig($params, $iv);var_dump(AES加密结果:.$encrypt_str);# AES解密演示//$encrypt_str AES加密后产生的密文//$key 秘钥(同上)$decrypt_str = openssl_decrypt($encrypt_str, 0。
更多请关注jquery中文网其它相关文章! 。
以防止秘钥在交互过程中被窃听并篡改 以上就是PHP 数据加密的方法的详细内容,。
相关热词:
本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!
本文地址: https://www.juheyunku.com/jiaob/shell/10606.shtml
相关文章
热门TAG
命令 权重 外链 企业网站 白帽 php 织梦教程 dedecms修改内容 javascript 织梦 功能 标签 调用 详解 服务器 网站流量 实例解析 Dedecms 织梦cms HTML tags标签 python jquery教程 jquery windows SEO优化 蜘蛛 搜索引擎 网站收录 JSP最新文章
-
Centos下PHP5升级为PHP7的方法
时间:2021-01-03
-
在php当中常量和变量的区
时间:2020-12-29
-
PHP中经典的四大排序算法
时间:2020-12-29
-
dw怎么运行php文件?
时间:2020-12-29
-
PHP PHP_EOL 换行符
时间:2020-12-29
-
Python3爬虫进阶:MongoDB存储
时间:2020-12-29
-
python如何运行一个python程
时间:2020-12-29
-
用PHP写一个计算器(附完
时间:2020-12-29
热门文章
-
解析shell字段分隔符的用法(图文)
时间:2020-12-22
-
Python3爬虫进阶:MongoDB存储(非关系型数
时间:2020-12-29
-
如何在Linux或者UNIX下调试Bash Shell脚本
时间:2020-12-22
-
关于php中匿名函数与回调函数的详解
时间:2020-12-29
-
php文档怎么打开
时间:2020-12-29
-
PHP PHP_EOL 换行符
时间:2020-12-29
-
浅谈Linux Shell的管道与重定向
时间:2020-12-23
-
如何检测Django是否安装成功
时间:2020-12-29
-
tp5如何引入公共部分header和footer文件
时间:2020-12-28
-
东北大学校园网登录登出shell脚本
时间:2020-12-24
