簡體   English   中英

如何在PHP中包含帶有密碼變量的隨機鹽

[英]How to include random salt with password variable in php

我有一個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個字符粘貼在passowrd的前面,並將其他3個字符粘貼在密碼的末尾?

例如:

密碼1可以是:$ teacherpassword = md5(md5(“ jfs”。$ teacherpassword。“ sfS”)));
密碼2可以是:$ teacherpassword = md5(md5(“ 4f3”。$ teacherpassword.pS“)));
密碼3可以是:$ teacherpassword = md5(md5(“ wpw”。$ teacherpassword。“ qq2”));

如您所見,所有的密碼都包含自己的鹽,這要歸功於php隨機生成的鹽

一個非常簡單的解決方案是使用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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM