php初学者看过来!告诉你如何使用php为会员登入密码加密

刚接触php的初学者,除了学习基础php语法之外,第一个作业通常是用php与mysql结合,如果系统与个人资料有关那安全性就是很大的一门学问,可不能直接将帐号密码都塞进去资料库啊!
  料理需要调味才有味道,在密码学中也有所谓的「盐(salt)」,简单的说,盐就是随机产生一个字串,然后在密码任意位置插入,这麽做可以保护使用者输入的密码避免在资料库中被直接窜改,没有加盐的密码即所谓的「明码」,若资料库直接将重要资讯以明码存进资料库,日后的资料安全性可能会有很大的疑虑哦!因此我们可以透过将密码加盐,将其杂凑再送到资料库保存,接下来,让我们将密码加点盐。
1. php
<?php

// 产生长度为32的盐值
function salt() {
return md5(substr(uniqid(rand()), -6));
}

// 密碼加密
function hashPassword($password, $salt) {
return hash('sha256', $password . $salt);
}
?&gt;<!--?php // 產生長度為32的鹽值 function salt() { return md5(substr(uniqid(rand()), -6)); } // 密碼加密 function hashPassword($password, $salt) { return hash('sha256', $password . $salt); } ?-->

经过杂凑的密码并非代表著绝对不会被破解,只是要解开这串杂凑密码在取得真实密码的时间会大幅的提升,进而增加被窃取资料的难度,以上范例仅加一次盐,另外仍有其他的加盐方式,如複合式杂凑法则是加两次盐在产生出结果。

贴心小提醒,盐值在使用者登入的时候是要取出再次加密比对的,所以不要忘记将盐值一并规划进资料库哦,为什麽会这麽提醒呢?因为当初本狗就犯过这个错(汪)。

参与评论