我有一个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