MD5基本上目前還是比較通用的密碼保存方式,但是很容易通過一些工具直接把簡單的明文反出來。然後就改進,有了加鹽一說,加鹽之後確實極大地提升了密碼被反查出來的風險。今天又看到一種比較非主流的方法,那就是保存密碼MD5散列的前10位
Select Case Int(sType) Case 0 '32位 MD5 = LCase(WordToHex(a) & WordToHex(b) & WordToHex(c) & WordToHex(d)) Case 1 '16位 MD5=LCase(WordToHex(b) & WordToHex(c)) Case 2 '左10位 MD5=Left(LCase(WordToHex(b) & WordToHex(c)),10) End Select
這樣做的優點是:
- cmd5等線上反查工具目前完全無解。
- 暴力跑md5的程式基本也是無解,都是只支持16和32位的。
- 一般人破解起來代價比較高也麻煩。
缺點:
- 可能出現明文不同,密文相同的情況。
- 假如反查網站推出取md5的前多少位功能,那麼方法就無效了,不過查詢時間會延長,每次查詢要做一次split。
- 太過非主流,擴展性相容性不夠好
說實在的,假如碰到這種保存的資料庫,脫褲客們也只能大叫一聲fuck了吧,哈哈哈哈,以後可以考慮保存31位的或者30位的,非主流啊!好累啊,感覺不會再破了。