2013年8月17日 星期六

ⓒ雜湊與加密


首先引用維基百科的定義:
http://zh.wikipedia.org/wiki/雜湊
雜湊 是電腦科學中一種對資料的處理方法,通過某種特定的函數/演算法(稱為雜湊函數/演算法)將要檢索的項與用來檢索的索引(稱為雜湊,或者雜湊值)關聯起來,生成一種便於搜索的資料結構(稱為雜湊表)。
http://zh.wikipedia.org/wiki/加密
加密 在密碼學中,加密是將明文信息隱匿起來,使之在缺少特殊信息時不可讀。
其實兩者是有些差異的,在網路上常會見到有人說MD5加密、SHA加密,不過其實嚴格來講雜湊只能算是一種加密的方式,而且只有使用雜湊其實並不安全,在這裡列出一個比較好的方法,能防止大多數的情形,以下分為幾個重要的部分:

1. 可以不在前端做雜湊,但一定要使用SSL加密。

2. 密碼要先做salt動作:
password = password + salt;

3. 可以在MySQL上使用雜湊,如:
MD5(password), SHA1(password), etc.
或是使用各種程式語言的雜湊函式,
速度上MySQL預設的方式會比較快一點點但是差距甚小,
不管是使用哪一種的雜湊方式都只能防君子難防小人,
只要選擇一個不容易很快被解密的方法即可,
例如現階段來說SHA256或SHA512就已經不錯用了。

4. 可以使用MySQL預設的加密解密工具:
加密解密
DES_ENCRYPT(str,[{key_num | key_str}]);DES_DECRYPT(crypt_str, [key_str]);

5. 使用更難被猜測的加密算法,如:
PBKDF2, bcrypt, scrypt, etc.

6. 最重要的還是要勤於更新軟體版本,以及程式的撰寫要夠嚴謹。

後記:
以上方法只能適用於一般的網站,
若要商用的話勢必要參考商用的安全規範,
並找尋具有更專業知識的專家來規劃設計,
這些資料是來自於Facebook上的網友們熱心的幫忙,
站長簡單做個心得整理。
張貼留言