PHP的几个常用加密函数,常用的多少个PHP加密函

2019-07-07 03:33 来源:未知

1,使用crypt()函数进行加密

MD5加密:

1、前言

PHP加密方法分为单项散列加密,对称加密,非对称加密这几类。

  像常用的MD5、hash、crypt、sha1这种正是单项散列加密,单项散列加密是不可逆的。

  像U帕杰罗L编码、base64编码这种就是对称加密,是可逆的,正是说加密解密都以用的一样秘钥。

  除其余正是非对称加密,加密和平化解密的秘钥不是同三个,即使从安全性来说,加密的新闻一旦还想着再解密回来,非对称加密无疑是极致安全的方法。

 

crypt()函数可以张开单项加密,具体语法如下:

string md5 ( string $str [, bool $raw_output = false ] )

2、不可逆加密函数

(一)、md5

string md5 ( string str[,boolraw_output = false ] )

1.md5()暗许情形下以 32 字符十六进制数字情势重临散列值,它承受多少个参数,第二个为要加密的字符串,第四个为raw_output的布尔值,默以为false,假诺设置为true,md5()则会回去原始的 16 位二进制格式报文章摘要要

2.md5()为单向加密,未有逆向解密算法,然则依然得以对一些布满的字符串通过募集,枚举,碰撞等方法破解

 

(二)、Crypt

string crypt ( string str[,stringsalt ] )

1.crypt()接受五个参数,第贰个为索要加密的字符串,第三个为盐值(正是加密搅扰值,若无提供,则私下认可由PHP自动生成【盐值只可以取两位】);重回散列后的字符串或贰个星星 13 字符的字符串,前者为了差距盐值。

2.crypt()为单向加密,跟md5一样。

 

(三)、sha1

string sha1 ( string str[,boolraw_output = false ]

1.跟md5很像,不相同的是sha1()私下认可情状下重回叁17个字符的散列值,传入参数性质一样,第三个为加密的字符串,第一个为raw_output的布尔值,默以为false,假如设置为true,sha1()则会重返原始的贰12人原始格式报文章摘要要

2.sha1()也是单向加密,未有逆向解密算法

 

(四)、hash

string hash($ago,$data);

1、$ago是足以内定加密应用的哈希算法,比如:"md5","sha256","haval160,4" 等。$data是要加密的数据

hash加密也是不可逆的,因为是给定一个不鲜明的字符串重回特定长度的字符串,那个精神意义上来讲完结了单项散列加密。

 

string crypt(string str[,tring salt]) 

1.md5()私下认可情形下以 32 字符十六进制数字格局重回散列值,它接受三个参数,第贰个为要加密的字符串,第三个为raw_output的布尔值,默感到false,若是设置为true,md5()则会回去原始的 16 位二进制格式报文章摘要要

3、可改变局面的j加密函数

(一)、Urlencode

string urlencode ( string $str )

1.多少个参数,传入要加密的字符串(平日使用于对U昂科雷L的加密),

2.urlencode为双向加密,可以用urldecode来加密(严苛意义上的话,不算真正的加密)

3.再次来到字符串,此字符串中除去 -_. 之外的装有非字母数字字符都将被交流成都百货分号(%)后跟两位十六进制数,空格则编码为加号( )。

 

(二)、base64编码

string base64_decode ( string $encoded_data )

1.base64_encode()接受三个参数,也正是要编码的多寡(这里不说字符串,是因为众多时候base64用来编码图片)

2.base64_encode()为双向加密,可用base64_decode()来解密

base64加密本质上说正是把数量转变为ASCLL码,比方二个图片举行base64编码就能够形成一群以Ascll码连接的字符串,那会更有益于文件的传导,当然base64的法力在与公事的传输。举例手提式无线电话机客户端上传文件到服务器,使用base64编码能够轻便完成文件的传输。

里头 str是要加密的字符串,salt为加密时行使的搅扰串,假诺省掉第1个参数,就能够随机生成三个苦恼串。crypt()函数帮忙多种算法和尺寸。具体如下表:
www.weide1946.com 1

2.md5()为单向加密,未有逆向解密算法,可是依旧得以对部分常见的字符串通过募集,枚举,碰撞等措施破解

亲自过问代码如下:

<?php
$username='jellybool';
$password='jellybool.com';
/*简单地对字符串进行md5加密*/
echo md5($username);
echo "<hr>";
echo md5($password);
echo "<hr>";
/*更推荐的做法是对重要的敏感数据进行多次加密,以防被轻易破解*/
echo md5(md5($password));

/*以上输出:
  username:4f5436e5d72608fb647b691e8edcf42e
  password:7bf02cf0f4af6da4accbc73d2a175476
  password(两次加密):864704bb35754f8cd0232cba6b91521b
*/
<?php 

$str ="I'm jack!!!";
echo "加密前的str为:".$str."<br>";
$cryptStr =crypt($str);
echo "加密后的str为:".$cryptStr."<br>";

?>

Crypt加密:

运作结果如下:

string crypt ( string $str [, string $salt ] )

首先次运转:

1.crypt()接受几个参数,第二个为须求加密的字符串,第2个为盐值(就是加密困扰值,若无提供,则暗中同意由PHP自动生成);重回散列后的字符串或贰个点儿 13 字符的字符串,前者为了分歧盐值。
2.crypt()为单向加密,跟md5同样。

www.weide1946.com 2 

<?php
$password='jellybool.com';
echo crypt($password);
//输出:$1$Fe0.qr5.$WOhkI4/5VPo7n7TnXHh5K
/*第二个$与第三个$之间的八个字符是由PHP生成的,每刷新一次就变一次
*/
echo "<hr>";
echo crypt($password,"jellybool");
//输出:je7fNiu1KNaEs
/*当我们要加自定义的盐值时,如例子中的jellybool作为第二个参数直接加入,
超出两位字符的会截取前两位*/
echo "<hr>";
echo crypt($password,'$1$jellybool$');
//输出:$1$jellyboo$DxH7wF7SygRpWb6XBBgfH/
/* crypt加密函数有多种盐值加密支持,以上例子展示的是MD5散列作为盐值,该方式下
盐值以$1$$的形式加入,如例子中的jellybool加在后两个$符之间,
超出八位字符的会截取前八位,总长为12位;crypt默认就是这种形式。
*/
echo "<hr>";
//crypt还有多种盐值加密支持,详见手册

第叁次运营:

Sha1加密:

www.weide1946.com 3 

string sha1 ( string $str [, bool $raw_output = false ]

其三回运维的结果:

1.跟md5很像,分化的是sha1()暗中同意情状下再次回到肆10个字符的散列值,传入参数性质同样,第多个为加密的字符串,第三个为raw_output的布尔值,默感觉false,假设设置为true,sha1()则会回到原始的17个人原始格式报文章摘要要
2.sha1()也是单行加密,未有逆向解密算法

www.weide1946.com 4 

<?php
$my_intro="jellybool";
echo sha1($my_intro);
//输出:c98885c04c1208fd4d0b1dadd3bd2a9ff4d042ca
echo "<hr>";
//当然,可以将多种加密算法混合使用
echo md5(sha1($my_intro));
//输出:94f25bf9214f88b1ef065a3f9b5d9874
//这种方式的双重加密也可以提高数据的安全性

能够看到每一次加密后的结果都不均等。那么该怎样判断加密后的字符串呢,今年你会开采salt就该派上用场了。哈哈。下边我们经过一段代码来演示下:

Urlencode加密:

<?php 

$str ="I'm jack!!!";
echo "加密前的str为:".$str."<br>";
$cryptStr =crypt($str,"doc");
echo "加密后的str为:".$cryptStr."<br>";

?>

string urlencode ( string $str )
1.三个参数,传入要加密的字符串(经常采取于对U兰德哈弗L的加密),
2.urlencode为双向加密,能够用urldecode来加密(严谨意义上的话,不算真正的加密)
3.再次来到字符串,此字符串中除去 -_. 之外的有所非字母数字字符都将被轮换来都百货分号(%)后跟两位十六进制数,空格则编码为加号( )。

运营结果如下:

<?php
  //urlencode()通常用于URL中明文数据的隐藏
  $my_urlencode="jellybool.com?jellybool=true   4-3%5= & @!";
  echo urlencode($my_urlencode);
  //输出:jellybool.com?jellybool=true + 4-3%5= & @!
  echo "<hr>";
  $my_urldecode="jellybool.com?jellybool=true + 4-3%5= & @!";
  echo urldecode($my_urldecode);
  //输出:jellybool.com?jellybool=true   4-3%5= & @! 
  //还原了$my_urlencode的输出
  echo "<hr>";
  $my_urldecode="http://www.baidu.com/s?word=jellybool 觉累不爱&tn=98236947_hao_pg&ie=utf-8";
  echo urldecode($my_urldecode);
  /*输出:http://www.baidu.com/s?word=jellybool 觉累不爱&tn=98236947_hao_pg&ie=utf-8
  没错,这就是在百度搜索jellybool 觉累不爱
  */

  /*
  =========================================================================
  解决第二个经典问题
  =========================================================================
  */
  $pre_url_encode="jellybool.com?username=jellybool&password=jelly";
  //在实际开发中,我们很多时候要构造这种URL,这是没有问题的
  $url_decode  ="jellybool.com?username=jelly&bool&password=jelly";
  /*注意上面两个变量的差别:第一个的username=jellybool,
              第二个为username=jelly&bool
  这种情况下用$_GET()来接受是会出问题的,这是可以用下面的方法解决 
  */
  $username="jelly&bool";
  $url_decode  ="jellybool.com?username=".urlencode($username)."&password=jelly";
  //这是可以很好的解决问题

  /*
  总结一下常见的urlencode()的转换字符
    ?=> ?
    = => =
    % => %
    & => &
     => 
      => +
    空格 =>  
  */

www.weide1946.com 5 

base64编码加密:

你会意识无论是运维多少次加密串是不改变的,那样我们就能够看清加密后的字符串了。

string base64decode ( string $encodeddata )
1.base64_encode()接受多个参数,也正是要编码的数目(这里不说字符串,是因为非常多时候base64用来编码图片)
2.base64encode()为双向加密,可用base64decode()来解密

2,使用md5()函数进行加密

echo base64_encode($my_intro);
echo "<hr>";
/*输出:SmVsbHlCb29s5piv5LiA5Liq6Lqr5p2Q5pyJ6auY5bqmLOiCqeiGgOacieWuveW
6pizog7jogozmnInljprluqYs5oCd5oOz5pyJ5rex5bqm55qE5Zu95a625YWN5qOA5Lq
UQee6p S8mOi0qOS8quWJjeerr0lU55S35bGM5Lid
*/
echo base64_decode('SmVsbHlCb29s5piv5LiA5Liq6Lqr5p2Q5pyJ6auY5bqmLOiCqeiGg
OacieWuveW6pizog7jogozmnInljprluqYs5oCd5oOz5pyJ5rex5bqm55qE5Zu95a6
25YWN5qOA5LqUQee6p S8mOi0qOS8quWJjeerr0lU55S35bGM5Lid');

/*输出:JellyBool是一个身材有高度,肩膀有宽度,胸肌有厚度,思想有深度的国家免检五A
级优质伪前端IT男屌丝
*/

md5()函数使用MD5算法。语法格式如下:

五个图片的例子:

string md5(string str[,bool raw_ouput]) 
<?php
/*
一个图片的应用例子
*/
$filename="https://worktile.com/img/index/index_video.png";

$data=file_get_contents($filename);
echo base64_encode($data);
/*然后你查看网页源码就会得到一大串base64的字符串,
再用base64_decode()还原就可以得到图片
*/

个中str为要加密的公然,raw_output参数要是设置为true,则赶回叁个二进制的密文,默感到false。

本文由 JellyBool 创作,原文

3,使用sha1()函数进行加密

你可能感兴趣的作品:

  • PHP循环函数使用介绍之PHP基础入门教程
  • php基础教程 php内置函数实例教程
  • php ftp文件上传函数(基础版)
  • php基础知识:类与指标(3) 构造函数和析构函数
  • php基础知识:函数基础知识
  • php 常用的系统函数
  • php常用字符函数实例小结
  • 给我们大快朵颐多少个常用的PHP函数
  • PHP常用函数总括(180五个)
  • php 基础函数

语法格式如下:

string sha1(string str[,bool,raw_output]) 

str为要加密的驾驭,raw_output借使为true,那么重临二个17人的二进制数。暗中认可raw_output为false。

多谢阅读, 希望能协理到大家,多谢大家对本站的支撑!

您恐怕感兴趣的篇章:

  • PHP完结加密的三种办法介绍
  • PHP中加密解密函数与DES加密解密实例
  • 现阶段比较盛行的六款PHP加密、解密工具Zend Guard和iconCube介绍
  • php中AES加密解密的事例小结
  • php中base64_decode与base64_encode加密解密函数实例
  • PHP可逆加密/解密函数分享
  • PHP 加密解密内部算法
  • 怎么给PHP源代码加密?PHP二进制加密与解密的消除办法
版权声明:本文由韦德娱乐1946_韦德娱乐1946网页版|韦德国际1946官网发布于网络编程,转载请注明出处:PHP的几个常用加密函数,常用的多少个PHP加密函