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 "加密口令&nbsp;&nbsp;".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 "解密口令&nbsp;&nbsp;".Decrypt($_SESSION['pwd']);

}

?>

(2)结果测试

比如输入“123456789”进行测试,将会得到如图8所示的加密结果。

图8.自定义算法加密结果测试

然后点击“解密”,可以得到如图9所示的解密结果。

图9.自定义算法解密结果测试

PHP的几种加密解密算法相关推荐

  1. 用java实现4种加密解密算法(包括:换位加密解密、替换加密解密、位加密解密、一次一密)

    案例1: 换位加密解密算法 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamR ...

  2. java变短加密解密算法_java----加密/解密常用算法

    一.常用的加密/解密算法 1.Base64 严格来说,Base64不是一种加密/解密算法,而是一种编码方式,多用于解决中文乱码中. 常用场景:对文件.URL等进行Base64编码,以字符串方式发送给对 ...

  3. RSA、MD5加密解密算法全套解析安装教程

    第一部分介绍加密解密算法, 第二部分介绍我小组成功应用的RSA.MD5两种加密解密算法,以及心得体会. 1.加密解密算法介绍 应用的开发中安全很重要,所以信息加密技术显得尤为重要.我们需要对应用中的多 ...

  4. java 实现 DES加密 解密算法

    DES算法的入口参数有三个:Key.Data.Mode.其中Key为8个字节共64位,是DES算法的工作密钥:Data也为8个字节64位,是要被加密或被解密的数据:Mode为DES的工作方式,有两种: ...

  5. 【Android 安全】DEX 加密 ( Java 工具开发 | 加密解密算法 API | 编译代理 Application 依赖库 | 解压依赖库 aar 文件 )

    文章目录 一.加密解密算法 API 二.编译代理 Application 依赖库 三.解压代理 Application 依赖库 aar 文件 参考博客 : [Android 安全]DEX 加密 ( 常 ...

  6. 基于新唐M0的XXTEA加密解密算法源码

    源:基于新唐M0的XXTEA加密解密算法源码 /*--------------------------------------------------------------------------- ...

  7. AES加密解密算法Java实现

    AES加密算法是密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准.这个标准用来替代原先的DE ...

  8. DES加密解密算法Java实现

    DES 使用一个 56 位的密钥以及附加的 8 位奇偶校验位,产生最大 64 位的分组大小.这是一个迭代的分组密码,使用称为 Feistel 的技术,其中将加密的文本块分成两半.使用子密钥对其中一半应 ...

  9. 简单的加密/解密算法_/c++

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/qq_36557960/article/details/79299093 关于加密和解密问题,有的加密 ...

最新文章

  1. 高可靠芯片搭配视觉演算法,影像式ADAS满足车规要求
  2. 系统学习深度学习(一) --深度学习与神经网络关系
  3. linux下实用工具,Linux下的实用工具(持续更新)
  4. 多个 本地仓库_老板逼我用 Git,本地指令介绍
  5. matlab序列码,Matlab7 R14(sn 序列号)
  6. 异步社区两周年 - 技术图书免费送(活动已结束)
  7. 第一次学游泳技巧_第一次学游泳小学生作文(精选5篇)
  8. python树莓派_树莓派python
  9. “不限流量卡”真的不限量,但是却限制了这些!
  10. php 检测英文字符,php正则验证中英文字符串 - 小俊学习网
  11. Android 6种加载网络图片的第三方详解
  12. Rockchip Android平台内存优化及系统裁剪
  13. 唤起公众号关注页面内部_外部H5页面内实现一键唤起微信添加好友OR关注公众号...
  14. 详解如何获取深度学习模型中间层的输出值
  15. python使用matplotlib绘制鼠标路径
  16. tms320vc5416c语言编程,TMS320VC5416中文资料
  17. 研究生自救指南之学术汇报篇:学术PPT应该怎么做?
  18. 随机存取存储器SRAM
  19. unturned云服务器怎么开服务器,Unturned怎么开服务器
  20. 【安全专业能力】关于一个安全人员必须要学会的技能

热门文章

  1. sql 语句 增加列,在指定列后面添加列
  2. 怎么用命令行还原mysql_mysql命令行备份还原数据库
  3. 思软软件协同oa办公软件标准版产品功能明细介绍
  4. python如何访问私有变量_Python基础_私有变量访问限制
  5. 痞子衡嵌入式:恩智浦MCU安全加密启动一站式工具nxpSecBoot用户指南
  6. 论文学习:Occlusion Robust Face Recognition Based on Mask Learning
  7. Booth算法在局域网监控软件中运用的一个例子
  8. 【科普】六旋翼无人机介绍
  9. 图解一致性哈希算法原理
  10. rtl8188gu网卡驱动安装