0

我有一个 pssword 变量,其中包含用户的密码,该密码在密码的开头和结尾包含一些搅拌,以便对密码进行加盐。下面是这个的代码:

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

显然,为密码加盐的字符将是所有密码的相同字符。

我想要的是创建一个随机字符生成器,​​以便盐的前 3 个字符和最后 3 个字符都是随机的,因此每个密码都有一个随机盐。

下面是创建随机挑选盐的字符的 php 生成器:

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

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

例如:

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

正如您所看到的,所有密码都包含自己的盐,这要归功于盐的 php 随机生成器

4

1 回答 1

0

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

substr — 返回字符串的一部分

$randomSalt = "abcdef";

$preSalt = substr($randomSalt, 0,3); // abc
$postSalt = substr($randomSalt, 3,3);  // def

$password = md5(md5($preSalt.$teacherpassword.$postSalt));

对您的另一项建议是使用 PHP 的uniqueid()函数为您的密码生成随机盐。

uniqid — 生成唯一 ID

于 2012-08-26T23:34:13.253 回答