您现在的位置: 无忧电子商务网 >> 信息学院 >> 程序开发 >> php >> 正文

PHP中的MD5加密

作者:佚名    信息学院来源:整理    点击数:    更新时间:2008-2-2 我要参与讨论

      综述:密码学是研究编制密码(我们简称为加密:encode)和破译密码(我们称之为解密:decode)的技术科学。研究密码变化的客观规律,应用于编制密码以保守通信秘密的,称为编码学;应用于破译密码以获取通信情报的,称为破译学,总称密码学。通常情况下,人们将可懂的文本称为明文;将明文变换成的不可懂的文本称为密文。把明文变换成密文的过程叫加密;其逆过程,即把密文变换成明文的过程叫解密。   

   PHP中提供了哪些数据加密功能?   

   PHP提供了crypt()函数完成加密功能:  

   string crypt (string input_string [, string salt])  

   这一函数完成被称作单向加密的功能,也就是说,它可以加密一些明码,但不能够将密码转换为原来的明码。单向加密的口令一旦落入第三方人的手里,由于不能被还原为明文,因此也没有什么大用处。在验证用户输入的口令时,用户的输入采用的也是单向算法,如果输入与存储的经加密后的口令相匹配,则输入的口令一定是正确的。   

   这个函数的input_string参数是需要加密的字符串,第二个参数salt是一个位字串,它能够影响加密的暗码,进一步地排除被称作预计算攻击的可能性。缺省情况下,PHP使用一个2个字符的DES干扰串,如果你的系统使用的是MD5 ,它会使用一个12个字符的干扰串。我们可以通过执行下面的命令发现系统将要使用的干扰串的长度:   

   print "系统使用的干扰串的长度是:". CRYPT_SALT_LENGTH;   

   crypt()支持四种算法,下面是它支持的算法和相应的salt参数的长度:

   [注:以下用表格]   

   算法 Salt长度

   CRYPT_STD_DES 2-character (默认)

   CRYPT_EXT_DES 9-character

   CRYPT_MD5 12-character beginning with $1$

   CRYPT_BLOWFISH 16-character beginning with $2$   

   怎样将PHP的数据加密功能应用于用户验证?   

   我们用crypt()实现用户身份验证。比如我们用一段PHP程序限制对一个目录的访问,只允许注册用户访问这一目录。我们把资料存储MySQL数据库的一个表(这个数据表名为members)中:   

   mysql>CREATE TABLE members (

   ->username CHAR(14) NOT NULL,

   ->password CHAR(32) NOT NULL,

   ->PRIMARY KEY(username)

   ->);   

   然后,我们可以输入用户的数据到该表中:   

   用户名 密码

   Tom keloD1C377lKE

   John ba1T7vnz9AWgk

   Bill paLUvRWsRLZ4U   

   这些加密的口令对应的明码分别是Tom、John和Bill。我们将根据口令的前二个字母创建干扰串:

   $enteredPassword.

   $salt = substr($enteredPassword, 0, 2);

   $userP

[1] [2] [3] 下一页

在google里搜索更多PHP中的MD5加密

Google
Web www.51ec.org
【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
我来说两句 对此文章发表了评论
  昵 称: *必填    ·注册用户·
  评 分: 1分 2分 3分 4分 5分     严禁发表危害国家安全、政治、黄色淫秽等内容的评论,用户需对自己在使用本网站服务过程中的行为承担法律责任。本站管理员有权保留或删除评论内容,评论内容只代表机友个人观点,与本网站立场无关。  
评 论
内 容

 
评论列表 (最新 评论仅限网友观点!)

供求信息




| 设为首页 | 加入收藏 | 关于我们 | 广告服务 | 联系方式 | 友情链接 | 版权申明