您当前的位置: 首页 > 学无止境 > 网站建设 网站首页网站建设
php加密专题-单向加密-对称加密-非对称加密
发布时间:2016-09-11 17:13:52编辑:雪饮阅读()
md5加密:
<?php
/*
md5加密函数有两个参数
第一个参数为待加密的字符串
第二个参数为布尔值,该值默认为false
该值为false时函数返回一个32 字符十六进制数
该值为true时函数返回16 字符二进制格式(很像中文乱码)
*/
$str='xy220807';
echo "默认md5加密:<br/>".md5($str);
echo "参数为true的md5加密:<br/>".md5($str,true);
/*
sha1加密算法和md5类似,只是其密文默认参数下长度可达40位,也是单向加密不可逆向的
默认参数:
40 字符十六进制数
false参数:
20 字符二进制格式
*/
?>
crypt加密:
<?php
/*
crypt函数加密时有两个参数
参数一是待加密字符串,参数2为干扰值字符串(可选,此处参数被称为盐值)
若没有传参干扰值就会随机使用一个干扰值
crypt函数的干扰算法取决于操作系统,所以对于不同操作系统所支持的算法不同,则第二个参数所传参的格式也就不同
*/
$str='xy220807';
echo "默认crypt加密:<br/>".crypt($str)."<br/>";
if(CRYPT_STD_DES){
//标准算法的干扰值传参字符长度仅2位,若超过2位也只取2位
echo "带有干扰值的crypt加密(标准算法):<br/>".crypt($str,'xy')."<br/>";
}
if(CRYPT_MD5){
//md5算法要求盐值格式为:以“$1$“开始 以”$"结束的字符串,此处双引号会导致解析$为变量
//md5的这种盐值中"$1$"与"$"中间的字符最长不超过12位。
echo "带有干扰值的crypt加密(md5算法):<br/>".crypt($str,'$1$xy$');
}
/*
crypt不仅仅只是以上两种算法
*/
?>
url编码:
<?php
/*
urlencode函数编码规范:
此字符串中除了-_.之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+)
urlencode是可逆的,使用urldecode就可以重新解码
rawurlencode函数和urlencode相同,只是在空格编码时将其编码为“%20”而非“+”,该函数也是可逆的,其解码函数为rawurldecode
*/
$str='侦查手段 规划';
echo "urlencode函数编码:<br/>".urlencode($str)."<br/>";
echo "rawurlencode函数编码:<br/>".rawurlencode($str)."<br/>";
?>
base64编码:
<?php
//header("content-type:image/jpeg");
/*
base_encode函数可以将字符串转换为ascll编码
该函数也是可逆的,该函数可以将文件也进行编解码,例如图片,可以尝试利用该原理解码下css3中icon图标,从而获得图标文件(未必可行)
输出图片类型数据需要在头部将其提前声明header("content-type:image/jpeg");
*/
$img=file_get_contents("1.jpg");//获取图片内容
//echo $img;
//$base64str=base64_encode($img);
//echo base64_decode($base64str);
//另外两种显示图片的方式,这两种不需要声明头部
?>
<img src="data:image/jpeg;base64,<?php echo base64_encode($img);?>"/>
<img src="data:;base64,<?php echo base64_encode($img);?>"/>
总结:
单向加密技术:
如md5,sha1这种单向不可解的,没有钥匙的加密方式
对称加密技术:
如urlencode,rawurlencode这种可逆的加密方式。
非对称加密技术:
如crypt这种加盐的方式(crypt严格意义上也不算是,因为它的盐可以知道,但是内部的加密是单向不
关键字词:单向加密,对称加密,非对称加密
下一篇:svn搭建完全流程详解
相关文章
-
无相关信息