1. 程式人生 > >登入系統中密碼用MD5加密有何作用?防誰呢?(附有程式碼)

登入系統中密碼用MD5加密有何作用?防誰呢?(附有程式碼)

在學習PHP100教程時,看到留言板的登入製作,先把MD5加密過的密碼形式儲存到資料庫中,然後通過登陸框輸入未加密的原始密碼,PHP從後臺幫你把原始密碼生成對應的MD5,再去和資料庫中的MD5密碼進行比對,比對一致則登入成功。

我就在弱弱地想,這樣的MD5加密,為了防止誰呢?

如果MD5加密,是為了讓密碼變成位數更多更復雜的一個字串,那盜號者通過前端登入頁面嘗試試錯的方式猜測密碼,也是經過MD5幫忙加密的試錯啊,盜號者並不需要直接從頭到尾測試16位或32位的密碼。

如果是防止侵入資料庫的黑客,那黑客一是直接指導了MD5形式的密碼,可在前端用不再進行密碼MD5加密的形式進行登入,當然,如果黑客侵入了資料庫,給你把MD5的密碼改成111,不就破解了嗎?


那麼,登入系統製作過程,使用MD5加密到底是為了防止哪種安全隱患呢?

最佳答案
這個加密當然是為了防止資訊不被盜取,修改,保護資訊啊,黑客入侵的話也是要只要你的加密後的密碼才能知道,況且MD5加密後面可以帶好多內容,即使你用破解方式來也是不行的,因為你方式不同破解出來的就有區別啊,我使用者登入的密碼是加密之後通過網際網路傳輸的,然後跟資料庫匹配,你資料庫密碼改成111也是沒用的,因為我資料密碼傳輸的時候就已經加密處理了,雖說你密碼輸入111,但是經過加密後就不是111了,這個跟資料庫匹配不同,就永遠錯的,黑客倒取資訊我想不會那麼笨,去記原本只有幾個字母的密碼加密後成了32位的數字,都是盜取原本密碼。最後就是跟你說下,這個MD5你現在還沒真的瞭解到它的用處,等你做一個涉及使用者註冊,登陸,以及賬戶
資金安全
的時候你就知道它的重要性了。

最佳答案

1. [程式碼][Java]程式碼     

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 /** * MD5加碼。32位 * @param inStr * @return */ public static String MD5(String inStr) { MessageDigest md5 =
null; try { md5 = MessageDigest.getInstance("MD5"); } catch (Exception e) { System.out.println(e.toString()); e.printStackTrace(); return ""; } char[] charArray = inStr.toCharArray(); byte[] byteArray = new byte[charArray.length]; for (int i = 0; i < charArray.length; i++) byteArray[i] = (byte) charArray[i]; byte[] md5Bytes = md5.digest(byteArray); StringBuffer hexValue = new StringBuffer(); for (int i = 0; i < md5Bytes.length; i++) { int val = ((int) md5Bytes[i]) & 0xff; if (val < 16) hexValue.append("0"); hexValue.append(Integer.toHexString(val)); } return hexValue.toString(); }

最佳答案
這個加密當然是為了防止資訊不被盜取,修改,保護資訊啊,黑客入侵的話也是要只要你的加密後的密碼才能知道,況且MD5加密後面可以帶好多內容,即使你用破解方式來也是不行的,因為你方式不同破解出來的就有區別啊,我使用者登入的密碼是加密之後通過網際網路傳輸的,然後跟資料庫匹配,你資料庫密碼改成111也是沒用的,因為我資料密碼傳輸的時候就已經加密處理了,雖說你密碼輸入111,但是經過加密後就不是111了,這個跟資料庫匹配不同,就永遠錯的,黑客倒取資訊我想不會那麼笨,去記原本只有幾個字母的密碼加密後成了32位的數字,都是盜取原本密碼。最後就是跟你說下,這個MD5你現在還沒真的瞭解到它的用處,等你做一個涉及使用者註冊,登陸,以及賬戶資金安全的時候你就知道它的重要性了。