This Domain(Admin5.com) is for Sale:

在PHP中的加密

时间:2007-11-14  来源:收集  作者:TUPS

  print"Youareunauthorizedtoenterthisarea.";
  exit;
  else:
  print"Thisisthesecretdata!";
  endif;
  ?>
  上面就是一个核实用户访问权限的简单身份验证系统。在使用crypt()保护重要的机密资料时,记住在缺省状态下使用的crypt()并不是最安全的,只能用在对安全性要求较低的系统中。

织梦好,好织梦

  下面介绍另一个PHP支持的函数━━md5(),这一函数使用MD5散列算法,它有几种很有趣的用法值得一提:一个混编函数可以将一个可变长度的信息变换为具有固定长度被混编过的输出,也被称作“信息文摘”。这是十分有用的,因为一个固定长度的字符串可以用来检查文件的完整性和验证数字签名以及用户身份验证。由于它适合于PHP,PHP内置的md5()混编函数将把一个可变长度的信息转换为128位(32个字符)的信息文摘。混编的一个有趣的特点是不能通过分析混编后的信息得到原来的明码,因为混编后的结果与原来的明码内容没有依靠关系。即便只改变一个字符串中的一个字符,也将使得MD5混编算法计算出二个截然不同的结果。我们首先来看下表的内容及其相应的结果:
  使用md5()混编字符串
  <?php
  $msg="ThisissomemessagethatIjustwrote";
  $enc_msg=md5($msg);
  print"hash:$enc_msg";
  ?> dedecms.com

结果:
  hash:81ea092649ca32b5ba375e81d8f4972c 本文来自织梦

  注重,结果的长度为32个字符。再来看一下下面的表,其中的$msg的值有了一点微小的变化:

织梦内容管理系统

  使用md5()对一个稍微变化的字符串进行混编
  <?php
  //注重,message中少了一个s
  $msg="ThisissomemesagethatIjustwrote";
  $enc_msg=md5($msg);
  print"hash2:$enc_msg<br/><br/>";
  ?> 本文来自织梦

结果:
  hash2:e86cf511bd5490d46d5cd61738c82c0c
  可以发现,尽管二个结果的长度都是32个字符,但明文中一点微小的变化使得结果发生了很大的变化,因此,混编和md5()函数是检查数据中微小变化的一个很好的工具。

织梦好,好织梦

  尽管crypt()和md5()各有用处,但二者在功能上都受到一定的限制。

织梦好,好织梦

看完这篇,您有何感觉呢?

文章评论

共有位Admini5网友发表了评论 查看完整内容

推荐信息

24小时热门信息