[mysql]MD5加密 VS. sha1加密

一般建立會員資料的時候,密碼都會使用加密來隱藏密碼,這樣做可以避免哪天資料庫被駭客入侵,這樣大批會員權益會受損的危險,但是加密方式這麼多,到底哪一種加密方式比較好?就以往我的經驗來看,會員部分加密有使用MD5或Sha1加密,到底哪一種加密方式比較安全呢?

而到底什麼是MD5加密呢?

MD5的全名是Message-Digest Algorithm 5Message-Digest Algorithm 5(資訊-摘要演算法 5),是基於MD2、MD3和MD4,,在90年代初由MIT Laboratory for Computer Science和RSA Data Security Inc的Ronald L. Rivest開發出來的。是一種不可逆的加密算法,目前還沒有實際可以反逆推回的公式,但已有網站提供暴力破解MD5的資料查詢。

那什麼又是SHA1加密呢?

SHA1其實是SHA家族中的其中一員,SHA的全名是Secure Hash Algorithm(安全雜湊演算法) ,是由美國國家安全域(NSA)所設計,並由美國國家標準與技術研究院(NIST)發佈;是美國政府標準。而SHA1是基於MD5發展而來,SHA1比MD5多32位密文,所以更安全,但由於長度較長,所以使用SHA1的運算時間會比MD5還長一些。

最後簡單整理一下:

明碼 = 不加密,安全度為0
md5 = 比較安全,但是容易破解
sha1 = 比md5安全
sha256 = 比sha1安全
sha 512 = 比sha 256安全

[mysql]如何從mysql資料庫中取出亂數資料

最近剛好寫到隨機廣告的部分,如果用PHP來處理亂數資料會非常麻煩而且效率會很低,因為必須從mysql資料庫中取出全部資料在亂數取出所要的筆數,如果資料庫龐大,這樣做就會讓網站開起時間又慢了一些,而且感覺好像有點繞遠路,畢竟資料庫本身就有提供隨機函數可以使用,所以直接在資料數下達隨機指令是做方便的作法。

舉例來說,如果我要從product資料表中隨機撈取四筆資料出來,那我的sql指令只要寫成下面這樣即可:
SELECT * FORM product ORDER BY RAND() LIMIT 4