加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

分析PHP安全编程的加密功能

发布时间:2022-06-28 13:15:04 所属栏目:PHP教程 来源:互联网
导读:预备知识 在详细介绍PHP的安全功能之前,我们需要花点时间来向没有接触过这方面内容的读者介绍一些有关密码学的基本知识,如果对密码学的基本概念已经非常熟悉,就可以跳过去这一部分。 密码学可以通俗地被描述为对加/解密的研究和实验,加密是将易懂的资
  预备知识
 
  在详细介绍PHP的安全功能之前,我们需要花点时间来向没有接触过这方面内容的读者介绍一些有关密码学的基本知识,如果对密码学的基本概念已经非常熟悉,就可以跳过去这一部分。
 
  密码学可以通俗地被描述为对加/解密的研究和实验,加密是将易懂的资料转换为不易懂资料的过程,解密则是将不易懂的资料转换为原来易懂资料的过程。不易懂的资料被称作密码,易懂的资料被称作明码。
 
  数据的加/解密都需要一定的算法,这些算法可以非常地简单,如著名的凯撒码,但当前的加密算法要相对复杂得多,其中一些利用现有的方法甚至是无法破译的。
 
  PHP同样提供了使用其crypt()函数完成单向加密功能的可能性。我将在这里简要地介绍该函数:
 
  string crypt (string input_string [, string salt])
 
  其中的input_string参数是需要加密的字符串,第二个可选的salt是一个位字串,它能够影响加密的暗码,进一步地排除被称作预计算攻击的可能性。缺省情况下,PHP使用一个2个字符的DES干扰串,如果你的系统使用的是MD5(我将在以后介绍MD5算法),它会使用一个12个字符的干扰串。顺便说一下,可以通过执行下面的命令发现系统将要使用的干扰串的长度:
 
  print "My system salt size is: ". CRYPT_SALT_LENGTH;
 
  系统也可能支持其他的加密算法。crypt()支持四种算法,下面是它支持的算法和相应的salt参数的长度:
 
  算法 Salt长度
 
  以下为引用的内容:
  CRYPT_STD_DES 2-character (Default)
  CRYPT_EXT_DES 9-character
  CRYPT_MD5 12-character beginning with 102/td>
  CRYPT_BLOWFISH 16-character beginning with 102/td>
 
  用crypt()实现用户身份验证
 
  作为crypt()函数的一个例子,考虑这样一种情况,你希望创建一段PHP脚本程序限制对一个目录的访问,只允许能够提供正确的用户名和口令的用户访问这一目录。我将把资料存储在我喜欢的数据库MySQL的一个表中。下面我们以创建这个被称作members的表开始我们的例子:
 
  然后,我们假定下面的数据已经存储在该表中:
 
  以下为引用的内容:
  用户名 密码
  clark keloD1C377lKE
  bruce ba1T7vnz9AWgk
  peter paLUvRWsRLZ4U
 
  这些加密的口令对应的明码分别是kent、banner和parker。注意一下每个口令的前二个字母,这是因为我使用了下面的代码,根据口令的前二个字母创建干扰串的:
 
  以下为引用的内容:
  .
  = substr(, 0, 2);
  = crypt(, );
  // 然后就和用户名一起存储在MySQL中
 
  我将使用Apache的口令-应答认证配置提示用户输入用户名和口令,一个鲜为人知的有关PHP的信息是,它可以把Apache的口令-应答系统输入的用户名和口令识别为和,我将在身份验证脚本中用到这二个变量。

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读