2010-10-29 50 views
1

我想從客戶端和服務器端的加密密碼,這意味着兩次加密,我發現在谷歌瀏覽器的代碼JavaScript md5,但我怎麼用JSF呢? 在服務器端我可以做但是,但在客戶端與JSF我怎麼辦?如何使用JSF加密

的JavaScript的md 5:http://phpjs.org/functions/md5:469

+0

「客戶端與JSF」是什麼意思?畢竟,JSF在服務器端。 – 2010-10-29 10:35:02

+0

我想他在問如何加密輸入字段的內容。 – FRotthowe 2010-10-29 10:43:15

回答

6

MD5是單向加密。您無法將其解密回原始字符串。在視角方面做到這一點也沒有意義。如果您使用數據庫來存儲數據,並且您的意圖是在數據庫中對密碼進行哈希處理,那麼請在數據庫端執行此操作。有點像樣的DB爲此提供了功能。目前還不清楚您使用的是哪個數據庫,但在MySQL等情況下,它簡稱爲md5()

重寫你的INSERT如下:

String sql = "INSERT INTO user (username, password) VALUES (?, md5(?))"; 

而且你SELECT如下:

String sql = "SELECT * FROM user WHERE username = ? AND password = md5(?)"; 

如果你唯一的功能要求是傳輸通過HTTP的數據(這是不明朗加密你的問題),然後看看HTTPS(使用SSL的HTTP)。這可以在Web服務器級別進行配置。再次,目前還不清楚你正在使用哪一個,但在例如Tomcat的情況下,你可以在this documentation中找到細節。

+0

謝謝BalusC! – Kency 2010-10-29 16:33:01

1

請 - 不這樣做你自己。使用SSL。這在大多數應用程序服務器和servlet容器中設置應該不會太複雜。

+0

謝謝你FRotthowe! – Kency 2010-10-29 16:40:06

1

不清楚用md5散列密碼的動機是什麼;如果要阻止某人攔截流量來使用密碼,那麼這種方法將無濟於事:攻擊者可以直接發送哈希密碼,因爲原始密碼的知識不再必要。

如果您想在不傳輸密碼的情況下使用此身份驗證,請使用基於挑戰 - 響應通信的摘要式身份驗證。

+0

謝謝Martin! – Kency 2010-10-29 16:34:34