background image

PHP 中使用 crypt()实现用户身份验证的代码

在开发

PHP 应用中如果不想自己开发新的加密算法,还可以利用 PHP 提供的 crypt()函数来

完成单向加密功能
了解

crypt() 

 
  只要有一点使用非

Windows 平台经验的读者都可能对 crypt()相当熟悉,这一函数完成

被称作单向加密的功能,它可以加密一些明码,但不能反过来将密码重新转换为原来的明
码。

crypt()函数定义如下。

 
  

string crypt (string input_string [, string salt]) 

 
  其中,

input_string 参数是需要加密的明文字符串,第二个可选的 salt 是一个位字串,

能够影响加密的暗码,进一步排除被破解的可能性。缺省情况下,

PHP 使用一个 2 个字符的

DES 干扰串,如果系统使用的是 MD5(参考下一节内容),PHP 则会使用一个 12 个字符的干
扰串。可以通过执行下面的命令发现系统将要使用的干扰串的长度。

 

 
  

print

 "My system salt size is: ". CRYPT_SALT_LENGTH; 

 
  

crypt()支持 4 种加密算法,表 19.1 显示了其支持的算法和相应的 salt 参数的长度。 

 
  表

crypt()支持四种加密算法 

算法

  Salt 长度

CRYPT_STD_DES   2-character (Default)
CRYPT_EXT_DES   9-character
CRYPT_MD5   12-character beginning with 

$1

$

CRYPT_BLOWFISH  16-character beginning with 

$2

$

 
从表面上看,

crypt()的函数似乎没有什么用处,但该函数的确被广泛用来保证系统密码的

完整性。因为,单向加密的口令即使落入第三方的手里,由于不能被还原为明文,也没有什
么大用处。

 

  用

crypt()实现用户身份验证 

  上一部分简单介绍了

crypt()函数的功能,下面利用其来实现用户的身份验证,其所要

实现的目标同

19.2.3 节所介绍的一致。 

复制代码

 代码如下:

 
<!--check_user_crypt.php:使用 crypt() 函数验证用户----------------> 
<?php 

$user_name

=

$_POST

["user_name"]; 

require_once

("sys_conf.inc"); 

//系统配置文件,包含数据库配置信息 

//连接数据库