
PHP如何对用户密码进行加密
第一种方法:可以使用如下方法对用户密码进行加密:MySql>SET user@”localhost” PASSWORD=PASSWORD(”Password”);
第二种方法:可以使用MYSQL的 PASSWORD函数进行用户密码的加密。例如:Insert into user(password, ……) values (PASSWORD(”$password”,………));
可以在一个PHP文件里面include另外一个PHP文件两次吗
是的,可以在一个PHP文件里面include另外一个PHP文件两次,被include的那个php文件也会执行两次,所以如果在这个文件里面定义的有一个class, 就会报出the class already defined的错误。
mysql的最长数据库名,表名,字段名可以是多长
数据库名字最长为64
数据表名字最长为64
字段名字最长为64
mysql_pconnect()和mysql_connect()有什么区别
两者的区别主要有两个:
1 在进行数据库连接时,函数会先找同一个host, 用户和密码的persistent(持续的)的'链接,如果能找到,则使用这个链接而不返回一个新的链接。
2 mysql_pconnect()创建的数据库连接在脚本执行完毕后仍然保留,可以被后来的代码继续使用,mysql_close()函数也不会关闭mysql_pconnect()创建的链接。
;$dbtable="tvblog";
define("dbprefix","twp_");
照这段代码来看,$dbtable应该是数据库名称
define("dbprefix","twp_");
是定义表的前缀,比如你的表名是twp_member
twp_就是表前缀,方便一个数据库安装多个论坛时使用的。一般都是默认设置,只要你没在安装论坛的时候修改这个。
在使用PHP开发Web应用的中,很多的应用都会要求用户注册,而注册的时候就需要我们对用户的信息进行处理了,最常见的莫过于就是邮箱和密码了,本文意在讨论对密码的处理:也就是对密码的加密处理。
MD5
相信很多PHP开发者在最先接触PHP的时候,处理密码的首选加密函数可能就是MD5了,我当时就是这样的:
$password = md5($_POST["password"]);
上面这段代码是不是很熟悉?然而MD5的加密方式目前在PHP的江湖中貌似不太受欢迎了,因为它的加密算法实在是显得有点简单了,而且很多破解密码的站点都存放了很多经过MD5加密的密码字符串,所以这里我是非常不提倡还在单单使用MD5来加密用户的密码的。
SHA256 和 SHA512
其实跟前面的MD5同期的还有一个SHA1加密方式的,不过也是算法比较简单,所以这里就一笔带过吧。而这里即将要说到的SHA256 和 SHA512都是来自于SHA2家族的加密函数,看名字可能你就猜的出来了,这两个加密方式分别生成256和512比特长度的hash字串。
他们的使用方法如下:
<php
$password = hash("sha256", $password);
PHP内置了hash()函数,你只需要将加密方式传给hash()函数就好了。你可以直接指明sha256, sha512, md5, sha1等加密方式。
盐值
在加密的过程,我们还有一个非常常见的小伙伴:盐值。对,我们在加密的时候其实会给加密的字符串添加一个额外的字符串,以达到提高一定安全的目的:
<php
function generateHashWithSalt($password) {$intermediateSalt = md5(uniqid(rand(), true));$salt = substr($intermediateSalt, 0, 6);
return hash("sha256", $password $salt);}
Bcrypt
如果让我来建议一种加密方式的话,Bcrypt可能是我给你推荐的最低要求了,因为我会强烈推荐你后面会说到的Hashing API,不过Bcrypt也不失为一种比较不错的加密方式了。
<php
function generateHash($password) {
if (defined("CRYPT_BLOWFISH") && CRYPT_BLOWFISH) {$salt = '$2y$11$' substr(md5(uniqid(rand(), true)), 0, 22);return crypt($password, $salt);
}
}
Bcrypt 其实就是Blowfish和crypt()函数的结合,我们这里通过CRYPT_BLOWFISH判断Blowfish是否可用,然后像上面一样生成一个盐值,不过这里需要注意的是,crypt()的盐值必须以$2a$或者$2y$开头,详细资料可以参考下面的链接:
>
把这段密文分割成若干段,对每段都进行一次MD5运算,然后把这堆密文连成一个超长的字符串,最后再进行一次MD5运算,得到仍然是长度为32位的密文。
<php
//把密文分割成两段,每段16个字符
function md5_2_1($data)
{
//先把密码加密成长度为32字符的密文
$data = md5($data);
//把密码分割成两段
$left = substr($data, 0, 16);
$right = substr($data, 16, 16);
//分别加密后再合并
$data = md5($left)md5($right);
//最后把长字串再加密一次,成为32字符密文
return md5($data);
}
//把密文分割成32段,每段1个字符
function md5_2_2($data)
{
$data = md5($data);
//循环地截取密文中的每个字符并进行加密、连接
for ($i = 0; $i < 32; $i++) {
$data = md5($data{$i});
}
//这时$data长度为1024个字符,再进行一次MD5运算
return md5($data);
}
>
以上就是关于PHP如何对用户密码进行加密全部的内容,包括:PHP如何对用户密码进行加密、php设置数据库、php代码怎么加密最好,不能破解的那种等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)