php加密方式有哪些,php代码加密的几种方式

  php加密方式有哪些,php代码加密的几种方式

  在网站开发过程中,经常需要对一些数据(比如用户密码)进行加密。本文主要介绍PHP的一些常用加密函数。

  MD5加密:

  字符串md5(字符串$str [,bool $raw_output=false ])

  1.默认情况下,md5()将哈希值作为32个字符的十六进制数返回。它接受两个参数,第一个是要加密的字符串,第二个是raw_output的布尔值,默认为false。如果设置为true,MD5()将以16位二进制格式返回原始消息摘要。

  2.md5()是单向加密,没有反向解密算法,但是一些常见的字符串仍然可以通过集合、枚举、碰撞等方法破解。

  ?php $ username= jellybool$ password= jellybool.com/*只需用md5 */echo md5($username)加密字符串即可;echo‘HR’;echo MD5($ password);echo‘HR’;/*比较推荐的方式是对重要敏感数据进行多次加密,防止被轻易破解*/echo MD5(MD5($ password));/*以上输出:用户名:4f 5436 e5d 72608 FB 647 b 691 E8 DCF 42密码:7 BF 02 cf 04 f 6 da 4 accbc 73d 2 a 175476密码(两次加密):864704 bb 35754 F8 CD 0232 CBA 691521 b */

  加密:

  字符串加密(字符串$str [,字符串$salt ])

  1.crypt()接受两个参数,第一个是要加密的字符串,第二个是salt值(即加密的干扰值,如果没有提供,默认由PHP自动生成);散列字符串或少于13个字符的字符串,用于区分salt值。

  2.crypt()是单向加密,就像md5一样。

  ?php $ password= jellybool.comecho crypt($密码);//output:$ 1 $ fe0 . QR 5 . $ woh ki4/5 vpo 7n 7 tnxh 5k/*第二个$和第三个$之间的八个字符是PHP生成的,每次刷新都会改变*/echo HR ;echo crypt($密码,‘果冻软糖’);//Output: je7fNiu1KNaEs /*当我们要添加一个自定义的salt值时,就像例子中那样,直接添加jellybool作为第二个参数。如果超过两个字符,前两位会被截取*/echo HR ;echo crypt($password, $ 1 $ jelly bool $ );//Output:$ 1 $ jelly boo $ dxh 7 wf 7 sygrpwb 6 xbg FH/* Crypt加密函数有多种盐加密支持。上面的示例显示MD5 hash作为salt值。这样,盐的价值就以1美元的形式增加了。例如,示例中的jellybool添加在最后两个$符号之间,如果超过八个字符,前八位将被截断,总长度为11。Crypt默认是这种形式。*/echo HR ;//crypt还支持多种盐加密。详见手册。

  Sha1加密:

  字符串sha1(字符串$str [,bool $raw_output=false ]

  1.与md5非常相似,不同之处在于sha1()默认返回40个字符的哈希值,传入的参数本质上是相同的。第一个是加密字符串,第二个是raw_output的布尔值,默认为false。如果设置为true,sha1()将返回原始的20位原始格式的消息摘要。

  ?php $ my _ intro= jellyboolecho sha1($ my _ intro);//输出:c 98885 c04c 1208 FD 40 B1 D3 BD 2 a 9 ff 4d 042 ca echo HR ;//当然,echo md5(sha1($my_intro))可以和各种加密算法结合使用;//Output:94 F2 BF 9214 f 88 B1 ef 065 a3 F9 b5 d 9874//这样的双重加密也可以提高数据安全性。

  Urlencode加密:

  字符串urlencode(字符串$str)

  2.urlencode是双向加密,可以用urldecode加密(严格来说不是真正的加密)

  3.返回一个字符串,其中包含除-_以外的所有非字母数字字符。将被替换为数百个分号(%),后跟两个十六进制数字,空格将被编码为加号()。

  ?服务器端编程语言(Professional Hypertext Preprocessor的缩写)

  //urlencode()通常用于隐藏URL中的明文数据。

  $my_urlencode=jellybool.com?jellybool=true 4-3%5= @!;

  echo urlencode($ my _ urlencode);

  //输出:jellybool.com?jellybool=true + 4-3%5=& @!

  -伊甸园字幕组=-翻译:果冻池=true+4-3% 5= & @!";echo URL decode($ my _ URL decode);//输出:软糖。com?果冻池=真4-3% 5= @!//还原了$my _ urlencode的输出-=ytet-伊甸园字幕组=-翻译:字果冻池觉累不爱tn=98236947 _郝_ pg ie=utf-8 ;echo URL decode($ my _ URL decode);/*输出:http://www.baidu.com/s?字果冻池觉累不爱tn=98236947 _郝_pg ie=utf-8没错,这就是在百度搜索果冻酒觉累不爱*/===============================================================================================================谢谢解决第二个经典问题======================================================*/$ pre _ URL _ enco=果冻池。 com?用户名果冻池密码=果冻;//在实际开发中,我们很多时候要构造这种URL,这是没有问题的-伊甸园字幕组=-翻译:用户名=果冻布尔密码=果冻;/*注意上面两个变量的差别:第一个的用户名=果冻软糖(用户名=果冻池),第二个为用户名=果冻布尔(用户名=果冻布尔)这种情况下用$_GET()来接受是会出问题的,这是可以用下面的方法解决*/$ username= jelly bool ;-伊甸园字幕组=-翻译:用户名= .URL编码(用户名).密码=果冻://这是可以很好的解决问题/*总结一下常见的URL编码()的转换字符?=?==%=%=& ==+组合键空格=*/

  64号基地编码加密:

  base64decode字符串(字符串$ deded)

  1 .base 64 _ encode()接受一个参数,也就是要编码的数据(这里不说字符串,是因为很多时候64号基地用来编码图片)

  /*输出:smvsbhlcb 29s 5 PIV 5 lia 5 liq 6 LQR 5 p2q 5 pyj 6 auy 5 bqmloicqegaguaciview

  6皮佐格拉7 joozmnnljprluqys 5 OCD 5 ooz 5 pyj 5 rex 5 bq m55 QE 5至95a 625 ywon 5 qoa 5 LQ

  uqee 6p s8me 0 QoS 8 quwjyr 0 Lu 55 s35 bgm 5 lid

  echo base 64 _ decode( smvsbhlcb 29s 5 PIV 5 lia 5 liq 6 LQR 5 p2 q 5 pyj 6 auy 5 bqmloicqg oacieview 6 pig 7 joozmnljpuqys 5 OCD 5 ooz 5 pyj 5 rex 5 bqm 55 QE 5 zu 95 a 6 25 yn 5 qoa 5 LQ ee 6 p S8 me 0 QoS 8 quwjer 0 Lu 55s 35 bgm 5 lid );/*输出:果冻酒是一个身材有高度,肩膀有宽度,胸肌有厚度,思想有深度的国家免检五一个a级优质伪前端是吗男屌丝*/

  一个图片的例子:

  ?php /*一个图片的应用例子*/$ filename= 339工作图块。com/img/index/index _ video。png ;$ data=文件_获取_内容($文件名);echo base 64 _ enco($ data);/*然后你查看网页源码就会得到一大串64号基地的字符串,再用base64_decode()还原就可以得到图片*/

php加密方式有哪些,php代码加密的几种方式