登录  /  注册

PHP函数crypt()的功能介绍_PHP教程

php中文网
发布: 2016-07-15 13:30:47
原创
1085人浏览过

我们知道在中有实现数据加密的功能,我们今天将为大家介绍的是其中一个可以实现数据加密功能的函数——php函数crypt()。 作为php函数crypt()的一个例子,考虑这样一种情况,你希望创建一段php脚本程序限 制对一个目录的访问,只允许能够提供正确的用户名和口令的用户访问这一目录。

我将把资料存储在我喜欢的数据库MySQL的一个表中。下面我 们以创建这个被称作members的表开始我们的例子:

<ol class="dp-xml">
<li class="alt"><span><span>mysql</span><span class="tag">&gt;</span><span>CREATE TABLE members (   </span></span></li>
<li>
<span>-</span><span class="tag">&gt;</span><span>username CHAR(14) NOT NULL,   </span>
</li>
<li class="alt">
<span>-</span><span class="tag">&gt;</span><span>password CHAR(32) NOT NULL,   </span>
</li>
<li>
<span>-</span><span class="tag">&gt;</span><span>PRIMARY KEY(username)   </span>
</li>
<li class="alt">
<span>-</span><span class="tag">&gt;</span><span>);  </span>
</li>
</ol>
登录后复制

然后,我们假定下面的数据已经存储在该表中:

用户名 密码
clark keloD1C377lKE
bruce ba1T7vnz9AWgk
peter paLUvRWsRLZ4U

PHP函数crypt()中的这些加密的口令对应的明码分别是kent、banner和parker。注意一下每个口令的前二个字母, 这是因为我使用了下面的代码,根据口令的前二个字母创建干扰串的:

<ol class="dp-xml">
<li class="alt"><span><span>$enteredPassword.   </span></span></li>
<li>
<span>$</span><span class="attribute">salt</span><span> = </span><span class="attribute-value">substr</span><span>($enteredPassword, 0, 2);   </span>
</li>
<li class="alt">
<span>$</span><span class="attribute">userPswd</span><span> = </span><span class="attribute-value">crypt</span><span>($enteredPassword, $salt);   </span>
</li>
<li><span>// $userPswd然后就和用户名一起存储在MySQL 中  </span></li>
</ol>
登录后复制

我将使用Apache的口令-应答认证配置提示用户输入用户名和口令,一个鲜为人知的有关PHP的信息是,它可以把Apache 的口令-应答系统输入的用户名和口令识别为$PHP_AUTH_USER和$PHP_AUTH_PW,我将在身份验证脚本中用到这二个变量。花一些时间仔细阅读下 面的脚本,多注意一下其中的解释,以便更好地理解下面的代码:

PHP函数crypt()和Apache的口令-应答验证系统的应用

<ol class="dp-xml">
<li class="alt"><span><span class="tag"><span> ?php   </span></span></span></li>
<li>
<span>$</span><span class="attribute">host</span><span> = </span><span class="attribute-value">"localhost"</span><span>;   </span>
</li>
<li class="alt">
<span>$</span><span class="attribute">user</span><span> = </span><span class="attribute-value">"zorro"</span><span>;   </span>
</li>
<li>
<span>$</span><span class="attribute">pswd</span><span> = </span><span class="attribute-value">"hell odolly"</span><span>;   </span>
</li>
<li class="alt">
<span>$</span><span class="attribute">db</span><span> = </span><span class="attribute-value">"users"</span><span>;   </span>
</li>
<li><span>// Set authorization to False   </span></li>
<li class="alt">
<span>$</span><span class="attribute">authorization</span><span> = </span><span class="attribute-value">0</span><span>;   </span>
</li>
<li><span>// Verify that user has entered<br> username and password   </span></li>
<li class="alt"><span>if (isset($PHP_AUTH_USER) &amp;&amp; <br>isset($PHP_AUTH_PW)) :   </span></li>
<li><span>mysql_pconnect($host, $user, <br>$pswd) or die("Can't connect to MySQL   </span></li>
<li class="alt"><span>server!");   </span></li>
<li><span>mysql_select_db($db) or die<br>("Can't select database!");   </span></li>
<li class="alt"><span>// Perform the encryption   </span></li>
<li>
<span>$</span><span class="attribute">salt</span><span> = </span><span class="attribute-value">substr</span><span>($PHP_AUTH_PW, 0, 2);   </span>
</li>
<li class="alt">
<span>$</span><span class="attribute">encrypted_pswd</span><span> = crypt($PHP_AUTH_PW, $salt);   </span>
</li>
<li><span>// Build the query   </span></li>
<li class="alt">
<span>$</span><span class="attribute">query</span><span> = "SELECT username FROM members WHERE   </span>
</li>
<li>
<span class="attribute">username</span><span> = '$PHP_AUTH_USER' AND   </span>
</li>
<li class="alt">
<span class="attribute">password</span><span> = '$encrypted_pswd'";   </span>
</li>
<li><span>// Execute the query   </span></li>
<li class="alt"><span>if (mysql_numrows(mysql_query($query)) == 1) :   </span></li>
<li>
<span>$</span><span class="attribute">authorization</span><span> = </span><span class="attribute-value">1</span><span>;   </span>
</li>
<li class="alt"><span>endif;   </span></li>
<li><span>endif;   </span></li>
<li class="alt"><span>// confirm authorization   </span></li>
<li><span>if (! $authorization) :   </span></li>
<li class="alt">
<span>header('WWW-Authenticate: <br>Basic </span><span class="attribute">realm</span><span>=</span><span class="attribute-value">"Private"</span><span>');   </span>
</li>
<li><span>header('HTTP/1.0 401 Unauthorized');   </span></li>
<li class="alt"><span>print "You are unauthorized <br>to enter this area.";   </span></li>
<li><span>exit;   </span></li>
<li class="alt"><span>else :   </span></li>
<li><span>print "This is the secret data!";   </span></li>
<li class="alt"><span>endif;   </span></li>
<li>
<span class="tag">?&gt;</span><span>  </span>
</li>
</ol>
登录后复制

上面就是一个核实用户访问权限的简单身份验证系统。在使用PHP函数crypt()保护重要的机密资料时,记住在缺省状态下使用的PHP函数crypt()并不是最安全的,只能用在对安全性要求较低的系统中,如果需要较高的安全性能,就需要我在本篇文章的后面介绍的算法。


www.bkjia.comtruehttp://www.bkjia.com/PHPjc/446265.htmlTechArticle我们知道在中有实现数据加密的功能,我们今天将为大家介绍的是其中一个可以实现数据加密功能的函数PHP函数crypt()。 作为PHP函数crypt()的...
智能AI问答
PHP中文网智能助手能迅速回答你的编程问题,提供实时的代码和解决方案,帮助你解决各种难题。不仅如此,它还能提供编程资源和学习指导,帮助你快速提升编程技能。无论你是初学者还是专业人士,AI智能助手都能成为你的可靠助手,助力你在编程领域取得更大的成就。
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号