我的编程空间,编程开发者的网络收藏夹
学习永远不晚

PHP数据加密方式梳理介绍

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

PHP数据加密方式梳理介绍

前言

首先我们来了解一下为什么要加密?

在网络通信的过程中攻击者可以伪造请求和返回,从而达到不可告人的目的。如下图所示:

数据加密之后可以防止他人监听窃取信息以及通讯内容被篡改。

了解了加密的作用,我再来说说加密的方式:

对称加密DES

DES是1977年美国联邦信息处理标准中采用的一种对称密码。是一种将64比特的明文加密成64比特的密文的对称算法

DES已经被暴力破解了,1999年RSA公司举办的破译DES比赛,耗时仅仅22小时45分钟破译了DES。所以不建议大家使用这种算法进行加密处理

对称加密AES

AES是取代DES而成为新标准的一种对称密码算法。目前为止还未被破译。

接下来我们用PHP来实践一下对称加密吧。

在使用PHP的AES加密需要使用openssl相关函数,该系列函数需要安装openssl扩展。

//获取可用的加密算法
$a = openssl_get_cipher_methods();
print_r($a)
//AES加密解密
$data = 'wo shi aes jiami shuju';//待加密的数据
$key = uniqid();//加密的密钥
$method = 'AES-128-CBC';//加密的方式
$iv = '1234567812345678';//初始化向量,必须是16位字符
$a = openssl_encrypt($data,$method,$key,OPENSSL_RAW_DATA,$iv);
//打印加密结果
print_r($a);
//解密
$d = openssl_decrypt($a,$method,$key,OPENSSL_RAW_DATA,$iv);
//解密后的数据
print_r($d);

非对称加密RSA

AES加密算法目前虽然没有被破解,但是也有一个问题,加密所使用的密钥该怎么去配送呢?如果直接写死在前端就很容易被其他人获取到(一次反编译就可以获取)。

此时就产生了RSA加密算法,不过RSA密码算法也有缺点,运算次数多,不适合加密长文本。

明文内容最长128字节

我们直接来看看PHP实现非对称加密吧

//使用公钥加密,私钥解密
$public_key = "-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA14VJBWSyVOI4Q4aV+Cvl
GX4Vb4wczPw0qQbGYAYzfuA7+RpO/X5DG7dFjdBMmb9cHvdWY8+uvKDVuHjbvCpm
3nSTgMbCLm/zDDTH8MUySSaxvm0tbdWm+L1Rinw5LZ+B1J9tHEXMwJZ2g5ZS4OZ0
4xlXx/4GWd9QBuV036er47J/cZ19WPgBDqQ4Mmm2X2na46NCeRenRBXLsaQhxvEe
5pX3WtguQtr+QrcekAmBoI1Xc0xhKDyXZ34rqZNvVCUNn11VzDcffanxlmTFFKDp
QCZLVf8gtSdcxxQQrOfStgLoyYbN1e2Spb/szfQHtbSZ1qHg1frhCvjgOmZ6gDi+
OQIDAQAB
-----END PUBLIC KEY-----";//公钥
$private_key = "-----BEGIN PRIVATE KEY-----
MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDXhUkFZLJU4jhD
hpX4K+UZfhVvjBzM/DSpBsZgBjN+4Dv5Gk79fkMbt0WN0EyZv1we91Zjz668oNW4
eNu8KmbedJOAxsIub/MMNMfwxTJJJrG+bS1t1ab4vVGKfDktn4HUn20cRczAlnaD
llLg5nTjGVfH/gZZ31AG5XTfp6vjsn9xnX1Y+AEOpDgyabZfadrjo0J5F6dEFcux
pCHG8R7mlfda2C5C2v5Ctx6QCYGgjVdzTGEoPJdnfiupk29UJQ2fXVXMNx99qfGW
ZMUUoOlAJktV/yC1J1zHFBCs59K2AujJhs3V7ZKlv+zN9Ae1tJnWoeDV+uEK+OA6
ZnqAOL45AgMBAAECggEAEdjMsjCjf9n31MepVZK09wZ02fbdT7A24CRaewsoaoJB
FSCzl9RD1GC51sOABF9PTpUmxz8kdiRPbmY7s/pC6Hr41/odjGDi3IjmYa7CukIF
CALcdzLxD7oFrZUZ2whRZP0KuQOir/QFvmHNXShYV5H6reoANqMCan/HzNmCp2ky
pdtWd+YOFnvwP/m6Xw/mKWN2cFEEdME32Y9fnUq6gCpmgEQLZkEz0XQ53R9Yj6+O
TpYhLzCgox5+HRL+PmE8G3XdVNOhbesmsTX4cS4s5/bWhw/iuZtlSGvNz867p0Ab
jNiouWpoiLM9uHwGURndg+fslLKrBLU0fQeeXYplsQKBgQD3iEDX/Nzo19RZWz6T
gf0r6S7tMtMWQr1InM8fuPxNXsT5QIuddNVp47UMs91F8K5bzGim7+0hM9SnBUsp
/wKw9DRQuELziSdFGyfyo4lDiVvjqvMInph1yLfXaLdz9fxlT5+a8fUFJQqH65w2
SL+ice07mWt7ak/f1bfGKeAuVQKBgQDe5LFNtDKWLxMaO8lVTR0wWziTLImu+E3e
svDIqZszyzqsLnZ4Qu6CXigrXQka8s1LRVF1kf4NQc65uutsFwitfOLitFa/h2wk
5K6Rqwl95QfkuYJpDvU4/IQ21O7HqRBt050QvBrNOfY8MCQUi3fisiP+mOkJS41Z
iVRmQsfsVQKBgCjMinOPOBIg0N1RjsTdXg9IxfVOtUAsC+rV/cWqxdsyzaCPpPN0
+GAVqhfH5abLftGepXkufpVEZ76HvtXTNGxaM+1CEbb2WkSnrzPtBIjfMQgbeydm
jJaNWM/mcKZqWwmP0CzHyKzqaAvzJ7JC12M9B+8U4IRdB4FLRpkg+dRpAoGAJkZz
Q/qrrSqMRzb5DdLeLk2b23oMcqVlCdcEjhDB/BTsEGEyKtijiHOOxlOFmsETC9ft
cxkM3U3tp+s3Pip+bPxDIdcCBoXExlkWuSD70kigIGDSyiOtbInAUoIiNtsLXTC3
igYjPBa1+AP0Tirc/WrFz5SGf/gfX767ZYwWNLkCgYBuHZrIWT0Feg5dJAkF7NMH
1Fes0Gn5sAQVvd9HVG4FAZxqJQa37M3GKD1m4ifBGtaDMgtWyVcMTdsr5hjpJB0G
sEYlg3TDyd096Axr+I7KHDlIzboJjDWDwzwtqkTzgBRlxsClhqW/y/1y1o/QI9Rj
CA7iK/XSPTdstVk5IPL/Aw==
-----END PRIVATE KEY-----";//私钥
$text ='我是待加密的内容';
//公钥加密,参数二$data为加密后的内容
$res = openssl_public_encrypt($text,$encrypt,$public_key);
if($res==false) echo '加密失败';
//私钥解密,参数一:待解密的数据  
//参数二:解密后的明文内容
$res = openssl_private_decrypt($encrypt,$decrypt,$private_key);
if($res==false) echo '解密失败';
echo '解密后的明文数据:'.$decrypt

上面的代码就是PHP实现公钥加密,私钥解密的过程,我们再来看看PHP私钥加密,公钥解密吧

//使用公钥加密,私钥解密
$public_key = "公钥"; 
$private_key = "私钥"; 
$text = "我是待加密的内容";
//公钥加密,参数二$data为加密后的内容
//参数三:私钥
$res = openssl_private_encrypt($text,$encrypt,$private_key);
if($res==false) echo '加密失败';
//私钥解密,参数一:待解密的数据  
//参数二:解密后的明文内容
//参数三:公钥
$res = openssl_public_decrypt($encrypt,$decrypt,$public_key );
if($res==false) echo '解密失败';
echo '解密后的明文数据:'.$decrypt

注意了,前端使用公钥或者私钥进行加密时,一般都会将加密内容转base64h后再传到服务器进行解密。服务器在接收到数据后应该进行base64解析后再进行公钥/私钥进行解密。后端返回给前端时,也应该将加密后的内容转base64格式,方便前端解析。

当然也有一些开发人员会使用urlencode进行url编码再传输给前后端,大家可以根据实际需要进行转码

到此这篇关于PHP数据加密方式梳理介绍的文章就介绍到这了,更多相关PHP数据加密内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

PHP数据加密方式梳理介绍

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Android Rsa数据加解密的介绍与使用示例

Rsa加密 RSA是目前最有影响力的公钥加密算法,RSA也是第一个既能用于数据加密也能用于数字签名的算法。该算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困 难,因此可以将乘积公开作为加密密钥
2022-06-06

JSON传递bool类型数据的处理方式介绍

如果服务器端生成的JSON中有bool类型的数据时,到客户端解析时出现了小小的问题,下面简单为大家介绍下正确的处理方式
2022-11-15

mysql数据库的加密与解密方式

本指南介绍了MySQL数据库中数据的加密和解密方法。加密方法:AES(高级加密标准):AES-128、AES-192、AES-256DES(数据加密标准)TripleDES(三重数据加密标准)解密方法:使用DECRYPT()函数,并提供用于加密的密钥。注意事项:加密和解密是不可逆的。使用安全且复杂的密钥。加密会影响性能。对于敏感数据,建议使用AES-256等强加密算法。
mysql数据库的加密与解密方式
2024-04-02

MongoD管理数据库的方法介绍

今天主要了解数据库管理,在操作之前先把MongoDB服务打开。一、显示数据库清单如果想查看数据库列表可以使用show dbs.二、切换数据库通过使用MongoDB中内置的句柄db来执行数据库操作。要对不同的数据库操作时,可以使用db.
2022-07-07

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录