您好,欢迎访问一九零五行业门户网

在PHP中加密

php提供了使用其crypt()函数完成单向加密功能的可能性。
string crypt (string input_string [, string salt])
其中的input_string参数是需要加密的字符串,第二个可选的salt是一
个位字串,它能够影响加密的暗码,进一步地排除被称作预计算攻击的可能
性。缺省情况下,php使用一个2个字符的des干扰串,如果你的系统使用的是
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 $1$
crypt_blowfish        16-character beginning with $2$
用crypt()实现用户身份验证
作为crypt()函数的一个例子,考虑这样一种情况,你希望创建一段php
脚本程序限制对一个目录的访问,只允许能够提供正确的用户名和口令的用
户访问这一目录。我将把资料存储在我喜欢的数据库mysql的一个表中。下面
我们以创建这个被称作members的表开始我们的例子:
mysql>create table members (
    ->username char(14) not null,
    ->password char(32) not null,
    ->primary key(username)
    ->);
然后,我们假定下面的数据已经存储在该表中:
用户名               密码
clark          kelod1c377lke
bruce         ba1t7vnz9awgk
peter         paluvrwsrlz4u
这些加密的口令对应的明码分别是kent、banner和parker。注意一下每
个口令的前二个字母,这是因为我使用了下面的代码,根据口令的前二个字
母创建干扰串的:
$enteredpassword.
$salt = substr($enteredpassword, 0, 2);
$userpswd = crypt($enteredpassword, $salt);
// $userpswd然后就和用户名一起存储在mysql中
我将使用apache的口令-应答认证配置提示用户输入用户名和口令,一个
鲜为人知的有关php的信息是,它可以把apache的口令-应答系统输入的用户
名和口令识别为$php_auth_user和$php_auth_pw,我将在身份验证脚本中用
到这二个变量。
其它类似信息

推荐信息