PHP中的加密功能

2016-01-29 15:25 15 1 收藏

PHP中的加密功能,PHP中的加密功能

【 tulaoshi.com - PHP 】

数据加密在我们生活中的地位已经越来越重要了,尤其是考虑到在网络上发生的大量交易和传输的大量数据。如果对于采用安全措施有兴趣的话,也一定会有兴趣了解PHP提供的一系列安全功能。在本篇文章中,我们将介绍这些功能,提供一些基本的用法,以便你能够为自己的应用软件中增加安全功能。 

预备知识 
在详细介绍PHP的安全功能之前,我们需要花点时间来向没有接触过这方面内容的读者介绍一些有关密码学的基本知识,如果对密码学的基本概念已经非常熟悉,就可以跳过去这一部分。 

密码学可以通俗地被描述为对加/解密的研究和实验,加密是将易懂的资料转换为不易懂资料的过程,解密则是将不易懂的资料转换为原来易懂资料的过程。不易懂的资料被称作密码,易懂的资料被称作明码。 

数据的加/解密都需要一定的算法,这些算法可以非常地简单,如著名的凯撒码,但当前的加密算法要相对复杂得多,其中一些利用现有的方法甚至是无法破译的。 

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

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

string crypt (string input_string [, string salt]) 
其中的input_string参数是需要加密的字符串,第二个可选的salt是一个位字串,它能够影响加密的暗码,进一步地排除被称作预计算攻击的可能性。缺省情况下,PHP使用一个2个字符的DES干扰串,如果你的系统使用的是MD5(我将在以后介绍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的表开始我们的例子: 

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。注意一下每个口令的前二个字母,这是因为我使用了下面的代码,根据口令的前二个字母创建干扰串的: 

$enteredPassword. 
$salt = substr($enteredPassword, 0, 2); 
$userPswd = crypt($enteredPassword, $salt); 
// $userPswd然后就和用户名一起存储在MySQL中 

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

crypt()和Apache的口令-应答验证系统的应用 
<?php 

$host = "localhost"; 
$user = "zorro"; 
$pswd = "hellodolly"; 
$db = "users"; 

// Set authorization to False 

$authorization = 0; 

// Verify&n

来源:https://www.tulaoshi.com/n/20160129/1495838.html

延伸阅读
标签: 办公软件
“版本”是Word 2000/XP提供的一个较实用的功能,它可以让我们在编辑的过程中把文档保存成不同的“版本”,以便日后对文档进行查看与修改。其实利用这个功能,我们还可以在一个Word文件中隐藏地保存多个独立的文档,就像一个Excel学习簿具有多个学习表一样,很利于文件的管理。 比如要在一个“学习”文件中保存“学习计划”及“学习总...
标签: 电脑入门
随着计算机技术的不断提升,电子产品也越来越多样化.小巧的U盘成为很多朋友的首选移动存储设备,但是正因为体积小巧,U盘也非常容易丧失,里面存放的重要数据和信息也很可能因此被泄漏。应用加密软件虽然可以起到掩护作用,却比较麻烦。这个问题也曾经困扰了图老师小编好长时间,开端应用Windows 7后,创造Win 7中自带的一项功效就可认为我们的U...
标签: PHP
概要:本文对PHP的输出控制功能进行了简单介绍并对其在简繁体转化中的应用给出了具体思路和实例 一 PHP 输出控制功能介绍 PHP作为当今流行的脚本语言之一,具有编写简便,执行速度快,扩充性好等优点。PHP的输出信息控制函数可以让你控制你的脚本输出的内容,可以用于许多不同的情况,特别是在你的脚本已经输出信息后需要发送文...
标签: Web开发
PHP 中的类在阐述类的概念之前我们来先说说面向对象编程的概念:面向对象的程序设计(Object-Oriented Programming,简记为OOP)立意于创建软件重用代码,具备更好地模拟现实世界环境的能力,这使它被公认为是自上而下编程的优胜者。它通过给程序中加入扩展语句,把函数“封装”进编程所必需的“对象”中。面向对象的编程语言使得复杂的工作条...
标签: Web开发
5. 其他杂项  5.1 生成图像 PHP可以操作处理图像。如果你已经安装了GD库,你甚至可以利用PHP生成图像。 ? Header("Content-type: image/gif"); $string=implode($argv," "); $im = imagecreatefromgif("images/button1.gif"); $orange = ImageColorAllocate($im, 220, 210...

经验教程

763

收藏

56
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部