如何在php中包含带有密码变量的随机salt


How to include random salt with password variable in php

我有一个pssword变量,它包含用户的密码,该密码在密码的开始和结束处包含一些搅拌,这样它就对密码进行了盐处理。以下是代码:

$teacherpassword = md5(md5("j92".$teacherpassword."djS"));  

很明显,选择用来加重密码的字符对于所有密码都是相同的字符。

我想要的是创建一个随机字符生成器,这样salt的前3个字符和最后3个字符都是随机的,这样每个密码都会有一个随机salt。

下面是创建的php生成器,用于为salt随机挑选字符:

$salt = ""; 
for ($i = 0; $i < 40; $i++) { 
   $salt .= substr(
     "./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", 
     mt_rand(0, 63), 
     1); 
}

我的问题是,我如何让生成器为salt挑选6个随机字符,然后将其中3个字符粘贴在密码前面,另3个粘贴在密码末尾?

例如:

密码1可以是:$teacheerpassword=md5(md5("jfs".$teacherpassword."sfS"))
密码2可以是:$teacheerpassword=md5(md5("4f3".$teacherpassword.p.S");
密码3可以是:$teacheerpassword=md5(md5("wpw".$teacherpassword."qq2"));

正如您所看到的,由于salt 的php随机生成器,所有密码都包含自己的salt

一个非常简单的解决方案是使用substr()

substr--返回字符串的一部分

$randomSalt = "abcdef";
$preSalt = substr($randomSalt, 0,3); // abc
$postSalt = substr($randomSalt, 3,3);  // def
$password = md5(md5($preSalt.$teacherpassword.$postSalt));

另外一个建议是使用PHP的uniqueid()函数为您的密码生成随机salt。

uniqid--生成唯一的ID