PHP实现MD5密码加盐处理

为了系统安全,大多密码都使用MD5加密处理,md5方式相对安全,但相同的密码MD5值也是相同的,加盐处理后可以生成相同密码而MD5值不同。不多说,直接上图(参考PHPCMS密码加密处理)

数据库如下:

PHP实现MD5密码加盐处理_第1张图片

其中admin和xiaozhang的密码都是123456,但值不同,是因为加了一组生成随机数的"encrypt"加密字段。

代码如下:

/**
 * 对用户的密码进行加密
 * @param $password
 * @param $encrypt //传入加密串,在修改密码时做认证
 * @return array/password
 */
function password($password, $encrypt='') {
	$pwd = array();
	$pwd['encrypt'] =  $encrypt ? $encrypt : create_randomstr();
	$pwd['password'] = md5(md5(trim($password)).$pwd['encrypt']);
	return $encrypt ? $pwd['password'] : $pwd;
}

/**
 * 生成随机字符串
 * @param string $lenth 长度
 * @return string 字符串
 */
function create_randomstr($lenth = 6) {
	return random($lenth, '123456789abcdefghijklmnpqrstuvwxyzABCDEFGHIJKLMNPQRSTUVWXYZ');
}

当调用password方法时,就可以返回密码和加密值(加盐值)。这样就能实现相对安全的登录密码了。

用户登录的时候只需查找username相同的数据,拿到数据库里的"encrypt"加密字段值+提交的密码反查,获取新的密码匹配数据库的密码,匹配相同即可正确登录。

转载于:https://my.oschina.net/u/265033/blog/3040197

你可能感兴趣的:(php,数据库,后端)