PHP中的MD5加密
http://tech.ddvip.com 2007年08月26日 社区交流
内容摘要:PHP提供了crypt()函数完成加密功能,本文介绍PHP中的MD5加密
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);
$userPswd = crypt($enteredPassword, $salt);
// $userPswd然后就和用户名一起存储在MySQL 中
crypt()和Apache的口令-应答验证系统的应用
<?php
$host = "localhost"; //主机
$username = "Tom"; //用户名
$passwd = "Hello world"; //密码
$db = "users"; //数据库名
// 设置是否通过验证标志,默认为否
$authorization = 0;
// 提示用户输入帐号和密码
if (isset($PHP_AUTH_USER) && isset($PHP_AUTH_PW)){
mysql_pconnect($host, $username, $passwd) or die("不能连接到MySQL服务器!");
mysql_select_db($db) or die("不能选择数据库!");
// 进行加密
$salt = substr($PHP_AUTH_PW, 0, 2);
$encrypted_pswd = crypt($PHP_AUTH_PW, $salt);
//SQL查询语句
$query = "SELECT username FROM members WHERE username = '$PHP_AUTH_USER' AND password = '$encrypted_pswd'";
// 执行查询
if (mysql_numrows(mysql_query($query)) == 1) {
$authorization = 1;
}
}
if (! $authorization){
header('WWW-Authenticate: Basic realm="用户验证"');
header('HTTP/1.0 401 Unauthorized');
print "无法通过验证";
exit;
}else {
print "已经加密";
}
?>
责编:豆豆技术应用
正在加载评论...
- php 正则表达式
- php 入门教程
- php 安装配置
- php 函数专题
- php 函数大全(EN)
- php 5.0 中文手册
- php 4.0 中文手册
- php 程序编码规范标准
- php 常见错误
- php 中文乱码
- php Apache 安装配置
- linux php 安装配置
- windows php 安装配置
- php 十天入门教程
- php 学习笔记
- php smarty 教程
- php 分页专题
- php 类
- php 变量
- php 常量
- php 数组
- php 脚本
- php 入门实例
- php 字符串
- php.ini 配置
- php xml 专题
- php session 教程
- php 对象模型
- 更多php专题……