這種新手是搞不定的 別亂看教 程 小心把網(wǎng)站整壞了 可以付費(fèi)找專業(yè)人士 我
江華網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)公司!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)公司等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)公司于2013年開始到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)公司。
php將密碼存入數(shù)據(jù)庫(kù),可以分內(nèi)常見的4種方式:
1、直接md5加密存到到數(shù)據(jù)庫(kù)
2、md5兩次存到數(shù)據(jù)庫(kù)
3、對(duì)需要加密的字符串和一個(gè)常量 進(jìn)行混淆加密
4、生成一個(gè)隨機(jī)的變量存到數(shù)據(jù)庫(kù)中,然后對(duì)需要加密的字符串和這個(gè)隨機(jī)變量加密
?php
$str="admin";?//需要加密的字符串
$str2="php";??//增加一個(gè)常量混淆?
$pass1=md5($str);
$pass2=md5(md5($str));
$pass3=md5($str.$str2);
echo?$pass1."br".$pass2."br".$pass3;
?
輸出:
第四種
$str="admin";?//需要加密的字符串
$encrypt=$row['encrypt'];?//?生成的?隨機(jī)加密字符串?存到數(shù)據(jù)庫(kù)中
$pass4=md5($str.$encrypt);
//??8db2ec7e9636f124e56f7eb4d7b7cc7e
1、先給你原來(lái)的數(shù)據(jù)表增加一個(gè)字段,字段名為md5,類型int,然后運(yùn)行一個(gè)sql語(yǔ)句:
sql語(yǔ)句:update xxx set md5=0 將md5這個(gè)字段值變成0,即表示該數(shù)據(jù)未MD5保存。
2、把這段代碼保存為rewrite.php并把數(shù)據(jù)庫(kù)名修改成你對(duì)應(yīng)的數(shù)據(jù)庫(kù),然后運(yùn)行。最好先把你的數(shù)據(jù)庫(kù)導(dǎo)出到本地的數(shù)據(jù)庫(kù),然后在本地親自測(cè)試以下這段代碼的效果,之后再進(jìn)行替換。
?php
/*讀取md5為0的前30條數(shù)據(jù),由于考慮到PHP有個(gè)30秒超時(shí)的內(nèi)置,所以一次更新30條,也可以大大降低對(duì)數(shù)據(jù)庫(kù)的負(fù)擔(dān)。*/
$sql=mysql_query("select id,password from XXX where md5=0 order by id desc limit 0,30");
$num=mysql_num_rows($sql);
if($num==0){
echo "所有MD5密碼替換完畢。"; //如果數(shù)據(jù)庫(kù)里面所有md5=0的記錄都變成了md5=1,則為修改完畢。
exit();
}else{
while($row=mysql_fetch_array($sql)){
$md5_pwd=md5($row['password']); //獲取原密碼,進(jìn)行MD5化。
$query=mysql_query("update XXX set md5=1,password='".$md5_pwd."' where id=".$row['id'].""); //將該條數(shù)據(jù)進(jìn)行更改,把原密碼改成MD5加密后的,并把md5值變成1,表示已經(jīng)該條數(shù)據(jù)已經(jīng)MD5加密
unset($query);
}
mysql_free_result($sql);
unset($sql,$row);
echo "meta http-equiv=\"refresh\" content=\"0;url=rewrite.php\""; //該30條記錄轉(zhuǎn)化完畢,繼續(xù)跳到這個(gè)頁(yè)面執(zhí)行,一直循環(huán)到替換結(jié)束。
exit();
}
mysql_close();
?
md5值 是不可逆的。 也就是不可能還原。
你可以使用其他的編碼方式。例如base64。這個(gè)可以編碼,并可以解碼。
傳輸數(shù)據(jù)的時(shí)候通過(guò)md5或者哈西算法這些,把某些字段加密,還有多種加密組合到一起,然后獲取的時(shí)候再解密,這樣防止別人獲取到一些信息