返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >PHP数据加密方式梳理介绍
  • 779
分享到

PHP数据加密方式梳理介绍

2024-04-02 19:04:59 779人浏览 独家记忆
摘要

目录前言对称加密DES对称加密AES非对称加密RSA前言 首先我们来了解一下为什么要加密? 在网络通信的过程中攻击者可以伪造请求和返回,从而达到不可告人的目的。如下图所示: 数据加

前言

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

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

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

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

对称加密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数据加密内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: PHP数据加密方式梳理介绍

本文链接: https://lsjlt.com/news/168458.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • PHP数据加密方式梳理介绍
    目录前言对称加密DES对称加密AES非对称加密RSA前言 首先我们来了解一下为什么要加密? 在网络通信的过程中攻击者可以伪造请求和返回,从而达到不可告人的目的。如下图所示: 数据加...
    99+
    2024-04-02
  • mysql数据库的加密函数介绍
    这篇文章运用简单易懂的例子给大家介绍mysql数据库的加密函数介绍,代码非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。mysql加密函数有:1、AES_ENCRYPT(str,key):返回...
    99+
    2024-04-02
  • PHP数据加密的几种方式
    首先我们来了解一下为什么要加密? 在网络通信的过程中攻击者可以伪造请求和返回,从而达到不可告人的目的。如下图所示: 数据加密之后可以防止他人监听窃取信息以及通讯内容被篡改。 了解了加密的作用,我再来...
    99+
    2023-10-04
    php 开发语言
  • php加密算法的实例介绍
    本篇内容主要讲解“php加密算法的实例介绍”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php加密算法的实例介绍”吧!<php#加密算法header(&#...
    99+
    2024-04-02
  • CZGL.ProcessMetrics处理监控数据的三种方式介绍
    目录导读三种方式处理监控数据主动推送ASP.NET Core自定义URL.NET diagnostics自定义监控指标导读 CZGL.ProcessMetrics 是一个 Metri...
    99+
    2024-04-02
  • MYSQL 增加从库方式介绍
    目录一、mysql主从复制实现细节二、增加一个slave一、MySQL主从复制 常见的主从架构: 一主一从:一个 Master,一个 Slave一主多从:一个 Master,多个 Slave 具体,参考下图: 实现细...
    99+
    2024-04-02
  • MYSQL 增加从库方式介绍
    目录一、MySQL主从复制实现细节二、增加一个slave一、MySQL主从复制 常见的主从架构: 一主一从:一个 Master,一个 Slave一主多从:一个 Master,多个 S...
    99+
    2024-04-02
  • 数据加密存储常见的加密方式
    数据加密存储五种常见的加密方式先总结下:数据加密存储五种常见的加密方式:数据加密存储方式一、MD5加密(加密不可逆)。数据加密存储方式二、Base64位加密(可加密也可解密)。数据加密存储方式三、sha1加密(加密不可逆)。数据加密存储方式...
    99+
    2023-09-07
    安全 网络 服务器 Powered by 金山文档
  • Ajax中GET与POST请求操作方法梳理介绍
    目录Ajax简介Ajax特点Ajax GET请求的基本操作Ajax GET请求的缓存问题Ajax POST请求的基本操作Ajax 设置请求头信息nodemon工具安装基于JSON的数...
    99+
    2022-11-13
    Ajax GET请求 Ajax POST请求
  • ajax数据传输方式详细介绍
    这篇文章主要介绍“ajax数据传输方式详细介绍”,在日常操作中,相信很多人在ajax数据传输方式详细介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”ajax数据传输方式详细...
    99+
    2024-04-02
  • SpringBoot加密配置文件方法介绍
    目录一个简单的SpringBoot项目基于Jasypt的加密集成步骤环境准备引入依赖内容加密密码的传递方式在实践中,项目的某些配置信息是需要进行加密处理的,以减少敏感信息泄露的风险。...
    99+
    2023-01-18
    Spring Boot加密配置文件 Spring Boot配置文件加密
  • MySQL数据库加密与解密方式
    这篇文章主要介绍“MySQL数据库加密与解密方式”,在日常操作中,相信很多人在MySQL数据库加密与解密方式问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL数据库加密...
    99+
    2024-04-02
  • JSON传递bool类型数据的处理方式介绍
    ajax中使用json传递数据时,其它数据类型都不是问题,但是如果服务器端生成的JSON中有bool类型的数据时,到客户端解析时出现了小小的问题,总结如下: 服务器返回的JSON为:...
    99+
    2022-11-15
    JSON传递bool bool类型数据
  • Android Rsa数据加解密的介绍与使用示例
    Rsa加密 RSA是目前最有影响力的公钥加密算法,RSA也是第一个既能用于数据加密也能用于数字签名的算法。该算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要...
    99+
    2022-06-06
    示例 rsa Android
  • NODE.JS加密模块CRYPTO常用方法介绍
    使用require('crypto')调用加密模块。 加密模块需要底层系统提供OpenSSL的支持。它提供了一种安全凭证的封装方式,可以用于HTTPS安全网络以及普通HTTP连接。 该模块还提供了一套针对O...
    99+
    2022-06-04
    模块 常用 方法
  • C#实现加密的几种方法介绍
    1.ACSII码加密 //ACSII码加密 private static string ACSIIPWd(string rpwd) { ...
    99+
    2024-04-02
  • Linux系统GRUB的MD5加密方法介绍
    这篇文章主要讲解了“Linux系统GRUB的MD5加密方法介绍”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux系统GRUB的MD5加密方法介绍”吧!用grub-md5-crypt成生...
    99+
    2023-06-10
  • MongoD管理数据库的方法介绍
    今天主要了解数据库管理,在操作之前先把MongoDB服务打开。 一、显示数据库清单 如果想查看数据库列表可以使用show dbs. 二、切换数据库 通过使用MongoDB中内置的句柄db来执行数据库操作。要对不同的数据...
    99+
    2022-07-07
    MongoDB 数据库管理
  • oracle数据加密方式有哪些
    oracle中的数据加密方式有以下两种DES加密算法DES加密算法是一种分组密码,以64位为分组对数据加密,它的密钥长度是56位,加密解密用同一算法。DES加密算法是对密钥进行保密,而公开算法,包括加密和解密算法。RC4加密算法RC4是一种...
    99+
    2024-04-02
  • java数据加密方式有哪些
    java中有以下常用的三种数据加密方式非对称加密非对称加密算法需要两个密钥来进行加密和解密,这两个密钥是公开密钥和私有密钥,公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作