武汉PHP培训
达内武汉民大中心

15271940953

热门课程

如何通过PHP实现数据加密

  • 时间:2018-05-24 15:29
  • 发布:武汉PHP培训班
  • 来源:互联网

随着互联网的普及,产生越来越多的交易和传输着大量的数据,这使得数据加密在我们生活中野越来越重要。

在本篇文章中,武汉PHP培训的小编将介绍这些功能,提供一些基本的用法,以便你能够为自己的应用软件中增加安全功能。

<a style='color:blue' href='http://wh.php.tedu.cn/'>武汉php培训</a>班

在详细介绍PHP的安全功能之前,我们需要花点时间来向没有接触过这方面内容的读者介绍一些有关密码学的基本知识,如果对密码学的基本概念已经非常熟悉,就可以跳过去这一部分。密码学可以通俗地被描述为对加/解密的研究和实验,加密是将易懂的资料转换为不易懂资料的过程,解密则是将不易懂的资料转换为原来易懂资料的过程。不易懂的资料被称作密码,易懂的资料被称作明码。 数据的加/解密都需要一定的算法,这些算法可以非常地简单,如著名的凯撒码,但当前的加密算法要相对复杂得多,其中一些利用现有的方法甚至是无法破译的。

PHP的加密功能。只要有一点使用非Windows平台经验的人可能对crypt()也相当熟悉,这一函数完成被称作单向加密的功能,它可以加密一些明码,但不能够将密码转换为原来的明码。尽管从表面上来看这似乎是一个没有什么用处的功能,但它的确被广泛用来保证系统密码的完整性。因为,单向加密的口令一旦落入第三方人的手里,由于不能被还原为明文,因此也没有什么大用处。在验证用户输入的口令时,用户的输入采用的也是单向算法,如果输入与存储的经加密后的口令相匹配,则输入的口信一定是正确的。

PHP同样提供了使用其crypt()函数完成单向加密功能的可能性。我将在这里简要地介绍该函数:

1

string crypt (string input_string [, string salt])

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

1

print "My system salt size is: ". CRYPT_SALT_LENGTH;

系统也可能支持其他的加密算法。crypt()支持四种算法,下面是它支持的算法和相应的salt参数的长度:

算法 Salt长度

1

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的表开始我们的例子:

1

mysqlCREATE TABLE members ( -username CHAR(14) NOT NULL, -password CHAR(32) NOT NULL, -PRIMARY KEY(username) -);

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

用户名 密码 clark keloD1C377lKE bruce ba1T7vnz9AWgk peter paLUvRWsRLZ4U

这些加密的口令对应的明码分别是kent、banner和parker。

注意一下每个口令的前二个字母,这是因为我使用了下面的代码,根据口令的前二个字母创建干扰串的:

1

$enteredPassword. $salt = substr($enteredPassword, 0, 2); $userPswd = crypt($enteredPassword, $salt); // $userPswd

然后就和用户名一起存储在MySQL中 我将使用Apache的口令-应答认证配置提示用户输入用户名和口令,一个鲜为人知的有关PHP的信息是,它可以把Apache的口令-应答系统输入的用户名和口令识别为$PHP_AUTH_USER和$PHP_AUTH_PW,我将在身份验证脚本中用到这二个变量。

花一些时间仔细阅读下面的脚本,多注意一下其中的解释,以便更好地理解下面的代码: crypt()和Apache的口令-应答验证系统的应用。

本篇文章是有武汉PHP培训为您呈现,希望给您带来更多更好的文章,更多相关资讯,请扫描下方二维码

武汉php培训班

上一篇:想要自学PHP的一些攻略
下一篇:学习PHP的十条必知的小建议

能够提高PHP程序员效率的小妙招

想要学好PHP要怎么做

你学php准备做什么工作呢

PHP前景如何,现在学PHP还有前途吗?

选择城市和中心
贵州省

广西省

海南省