PHP的几种加密解密算法
PHP的几种加密解密算法
一、开发环境
1、Windows+Apache+MySQL+PHP的环境。
2、文本编辑器:Sublime。
二、主要技术
PHP
三、实验内容与结果
本文主要介绍PHP的几种加密解密技术。主要有md5、crypt、sha1、base64_encode(base64_decode)、urlencode(urldecode)还有一种自定义的数字加密算法。下面主要通过几个例子来展示其加密效果。
3.1、md5加密技术
Md5是一种单向的加密技术,不可逆,不能进行解密。md5() 函数使用 RSA 数据安全,包括 MD5 报文摘要算法。MD5 报文摘要算法将任意长度的信息作为输入值,并将其换算成一个 128 位长度的"指纹信息"或"报文摘要"值来代表这个输入值,并以换算后的值作为结果。
(1)实现过程
<?php
/**
*md5加密算法
*/
echo"<form action='' method='post'>";
echo "<input type='text'name='text'>";
echo "<input type='submit' name='sub'value='md5加密'>";
echo "</form>";
// md5加密
if(isset($_POST['sub'])){
$str=$_POST['text'];
$md5str=md5($str);
echo "加密结果:".$md5str;
}
?>
(2)结果测试
比如输入“123$#%d&3e*wsc”进行测试,将会得到如图1所示的加密结果。
图1. md5加密结果测试
3.2、crypt加密技术
crypt是一种单向的加密技术,不可逆,不能进行解密。具体的算法依赖于 salt 参数的格式和长度。通过增加由使用特定加密方法的特定字符串所生成的字符串数量,salt可以使加密更安全。
(1)实现过程
<?php
/**
*crypt加密算法
*其单向加密,不可逆,不可解密
*/
echo "<form action=''method='post'>";
echo "<input type='text'name='text'>";
echo "<input type='submit'name='sub' value='crypt加密'>";
echo "</form>";
// crypt加密
if(isset($_POST['sub'])){
$str=$_POST['text'];
$cryptstr=crypt($str,'r2'); // 'r2'为盐值,默认是随机生成的两位字串
echo "加密结果:".$cryptstr;
}
?>
(2)结果测试
比如输入“123$#%d&3e*wsc”进行测试,将会得到如图2所示的加密结果。
图2. cryt加密结果测试
3.3、sha1加密技术
Sha1是一种单向的加密技术,不可逆,不能进行解密。
(1)实现过程
<?php
/**
*sha1加密算法
*其单向加密,不可逆,不可解密
*/
echo "<form action=''method='post'>";
echo "<input type='text'name='text'>";
echo "<input type='submit'name='sub' value='sha1加密'>";
echo "</form>";
// sha1加密
if(isset($_POST['sub'])){
$str=$_POST['text'];
$sha1str=sha1($str);
echo "加密结果:".$sha1str;
}
?>
(2)结果测试
比如输入“123$#%d&3e*wsc”进行测试,将会得到如图3所示的加密结果。
图3. Sha1加密结果测试
3.4、base64编码加密、解密技术
设计此种编码是为了使二进制数据可以通过非纯 8-bit 的传输层传输,例如电子邮件的主体。
(1)实现过程
<?php
/**
*Base64编码加密技术
*base64_encode — 使用 MIME base64 对数据进行编码
*string base64_encode ( string $data ) ,使用 base64 对 data *进行编码。设计此种编码是为了使二进制数据可以通过非纯 8-bit *的传输层传输,例如电子邮件的主体。
*/
echo "<form action=''method='post'>";
echo "<input type='text'name='text'>";
echo "<input type='submit'name='sub' value='加密'>";
echo "</form>";
// 加密
if(isset($_POST['sub'])){
$str=$_POST['text'];
$enstr=base64_encode($str);
echo "加密结果:".$enstr."<br/>";
@session_start();
$_SESSION['entsr']=$enstr;
echo "<ahref='base64.php?pwd=1'>解密</a>";
}
// 解密
if($pwd=isset($_GET['pwd'])){
@session_start();
$str=@$_SESSION['entsr'];
$destr=base64_decode($str);
echo "解密结果:".$destr."<br/>";
}
?>
(2)结果测试
比如输入“123$#%d&3e*wsc”进行测试,将会得到如图4所示的加密结果。
图4. Base64_encode加密结果测试
然后点击“解密”,可以得到如图5所示的解密结果。
图5. Base64_decode加密结果测试
3.5、url编码加密、解密技术
url编码加密技术使用urlencode/urldecode实现加密解密,urlencode()返回字符串,此字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+)。注意:只对非字母数字进行处理。
(1)实现过程
<?php
/**
*url编码加密技术
*/
echo "<form action=''method='post'>";
echo "<input type='text'name='text'>";
echo "<input type='submit'name='sub' value='加密'>";
echo "</form>";
// 加密
if(isset($_POST['sub'])){
$str=$_POST['text'];
$enstr=urlencode($str);
echo "加密结果:".$enstr."<br/>";
@session_start();
$_SESSION['entsr']=$enstr;
echo "<ahref='urlcode.php?pwd=1'>解密</a>";
}
// 解密
if($pwd=isset($_GET['pwd'])==1){
@session_start();
$str=@$_SESSION['entsr'];
$destr=urldecode($str);
echo "解密结果:".$destr."<br/>";
}
?>
(2)结果测试
比如输入“123$#%d&3e*wsc”进行测试,将会得到如图5所示的加密结果。
图6. urlcode加密结果测试
然后点击“解密”,可以得到如图7所示的解密结果。
图7. Urldecode解密结果测试
3.6、自定义数字加密、解密算法
主要使用位运算符对数字进行加密、解密。
(1)实现过程
<?php
/**
*自定义数字加密算法
*/
echo "<form action=''method='post'>";
echo "数字口令:<input type='text' name='text'>";
echo "<input type='submit'name='sub' value='确定'>";
echo "</form>";
define("PI",3.1415926);
// 自定义加密算法
function Encrypt($str){
return $str=$str<<PI;
}
// 自定义解密算法
function Decrypt($str){
return $str=$str>>PI;
}
if(isset($_POST['sub'])){
echo "加密口令 ".Encrypt($_POST['text'])."</br>"; // 输出口令
@session_start();
$_SESSION['pwd']=Encrypt($_POST['text']);
echo "<a href='zdy.php?pwd=1'>解密口令</a>";
}
@session_start();
if(isset($_GET['pwd'])){
echo "解密口令 ".Decrypt($_SESSION['pwd']);
}
?>
(2)结果测试
比如输入“123456789”进行测试,将会得到如图8所示的加密结果。
图8.自定义算法加密结果测试
然后点击“解密”,可以得到如图9所示的解密结果。
图9.自定义算法解密结果测试
PHP的几种加密解密算法相关推荐
- 用java实现4种加密解密算法(包括:换位加密解密、替换加密解密、位加密解密、一次一密)
案例1: 换位加密解密算法 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamR ...
- java变短加密解密算法_java----加密/解密常用算法
一.常用的加密/解密算法 1.Base64 严格来说,Base64不是一种加密/解密算法,而是一种编码方式,多用于解决中文乱码中. 常用场景:对文件.URL等进行Base64编码,以字符串方式发送给对 ...
- RSA、MD5加密解密算法全套解析安装教程
第一部分介绍加密解密算法, 第二部分介绍我小组成功应用的RSA.MD5两种加密解密算法,以及心得体会. 1.加密解密算法介绍 应用的开发中安全很重要,所以信息加密技术显得尤为重要.我们需要对应用中的多 ...
- java 实现 DES加密 解密算法
DES算法的入口参数有三个:Key.Data.Mode.其中Key为8个字节共64位,是DES算法的工作密钥:Data也为8个字节64位,是要被加密或被解密的数据:Mode为DES的工作方式,有两种: ...
- 【Android 安全】DEX 加密 ( Java 工具开发 | 加密解密算法 API | 编译代理 Application 依赖库 | 解压依赖库 aar 文件 )
文章目录 一.加密解密算法 API 二.编译代理 Application 依赖库 三.解压代理 Application 依赖库 aar 文件 参考博客 : [Android 安全]DEX 加密 ( 常 ...
- 基于新唐M0的XXTEA加密解密算法源码
源:基于新唐M0的XXTEA加密解密算法源码 /*--------------------------------------------------------------------------- ...
- AES加密解密算法Java实现
AES加密算法是密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准.这个标准用来替代原先的DE ...
- DES加密解密算法Java实现
DES 使用一个 56 位的密钥以及附加的 8 位奇偶校验位,产生最大 64 位的分组大小.这是一个迭代的分组密码,使用称为 Feistel 的技术,其中将加密的文本块分成两半.使用子密钥对其中一半应 ...
- 简单的加密/解密算法_/c++
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/qq_36557960/article/details/79299093 关于加密和解密问题,有的加密 ...
最新文章
- 高可靠芯片搭配视觉演算法,影像式ADAS满足车规要求
- 系统学习深度学习(一) --深度学习与神经网络关系
- linux下实用工具,Linux下的实用工具(持续更新)
- 多个 本地仓库_老板逼我用 Git,本地指令介绍
- matlab序列码,Matlab7 R14(sn 序列号)
- 异步社区两周年 - 技术图书免费送(活动已结束)
- 第一次学游泳技巧_第一次学游泳小学生作文(精选5篇)
- python树莓派_树莓派python
- “不限流量卡”真的不限量,但是却限制了这些!
- php 检测英文字符,php正则验证中英文字符串 - 小俊学习网
- Android 6种加载网络图片的第三方详解
- Rockchip Android平台内存优化及系统裁剪
- 唤起公众号关注页面内部_外部H5页面内实现一键唤起微信添加好友OR关注公众号...
- 详解如何获取深度学习模型中间层的输出值
- python使用matplotlib绘制鼠标路径
- tms320vc5416c语言编程,TMS320VC5416中文资料
- 研究生自救指南之学术汇报篇:学术PPT应该怎么做?
- 随机存取存储器SRAM
- unturned云服务器怎么开服务器,Unturned怎么开服务器
- 【安全专业能力】关于一个安全人员必须要学会的技能