PHP:資料加密的方式

很久以前我一直以為登入的帳號密碼一直都是明碼儲存

直到自己開始工作要實作登入功能的時候就一直覺得好像怪怪的

加上曾在FB的社團裡面看到一些文章裡面看到說不要以明碼儲存

才開始去研究到底這個部分是怎麼處理的

以下來看範例:

<?php
$password="test123456";
//1.MD5
echo "MD5:".md5($password)."<br>";
//結果:47ec2dd791e31e2ef2076caf64ed9b3d

//2.SHA 以sha256為例
echo "sha256:".hash("sha256", $password)."<br>";
//結果:85777f270ad7cf2a790981bbae3c4e484a1dc55e24a77390d692fbf1cffa12fa

突然想到就提一下幾點要注意的事情:

我主管之前偶爾會跟我提到說要注意函式的支援版本

因為現在PHP會漸漸朝php7前進

所以有些函式如果在php7沒有支援的話

建議是盡量不要使用

避免升級的時候還要花額外的心力去處理那些BUG

也是挺麻煩的呢QQ

要查詢的話記得去php.net查詢 這樣才準確喔!

另外使用上述這兩個方法的話

記得MD5在資料庫的欄位長度要32

SHA的話要64

這樣才不會在新增資料的時候發生問題喔!

參考資料也有提到一些我沒用過的加密方法

用過之後再來分享吧~

 

參考資料:

1.https://segmentfault.com/a/1190000003024932

2.https://blog.longwin.com.tw/2015/10/php-sha256-sha512-hash-algorithm-2015/

延伸資料:

https://blog.longwin.com.tw/2016/11/php-fastest-hash-non-cryptographic-2016/

廣告

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s