2013-03-05 57 views
0

我創建的用戶我的應用程序,並正與Spring Security的MD5哈希編碼器確保他們:春MD5外觀形式

PasswordEncoder encoder = new Md5PasswordEncoder(); 
String hashedPass = encoder.encodePassword(dbUser.getPassword(), null); 
dbUser.setPassword(hashedPass); 

因此「管理」變成了「d41d8cd98f00b204e9800998ecf8427e」。

這是所有罰款和花花公子,但我也試圖創建一個表單,當前用戶可以去更新自己的細節,等

我不打擾關於MD5哈希值,因爲這是解碼不是春季的一部分(someone already asked)。但是,當我嘗試將其添加到我的表單時,沒有任何內容出現。

<form:password cssClass="input" placeholder="Password" path="password" /> 

如果我添加「showPassword」屬性,則MD5哈希被添加到擋在外面(例如,通過對鉻圓圈)的字段,但是如果我右擊和「查看源」的散列是存在的。

我該如何使它看起來像原來的'管理員'輸入的字符數? HTML5佔位符將無法工作,因爲用戶可能認爲他們每次都必須重新鍵入密碼,並且javascript絕對不是一個乾淨的選項。

非常感謝,

託比

+0

MD5不是一個好選擇。改用[BCrypt](http://stackoverflow.com/a/8528804/241990)。 – 2013-03-05 14:42:59

+0

我猜猜同一個問題的空白密碼字段仍然適用?除了改進的安全級別之外,是否還有其他特殊的好處,例如性能?歡呼 – Toby 2013-03-05 18:54:24

+0

在性能方面,它要慢得多(按設計)。查看[Wikipedia page](http://en.wikipedia.org/wiki/Bcrypt)或搜索此網站獲取更多信息。 – 2013-03-05 20:06:57

回答

2

散列的整點是,你不能翻轉。你不能說出原來是什麼,你不知道它有多久。你不應該以任何方式顯示它。

+0

好吧,正如我的想法,但我錯過了我的查詢的第二部分 - 是否有一種方法來顯示6星形字符或任何方式,不會使表單失效,並且不使用html5佔位符?我不喜歡把表單元素留空......乾杯 – Toby 2013-03-05 13:55:46

1

我不推薦向用戶顯示密碼(或其他機密信息):nether散列或純文本。 爲了解決這個問題UX,您可以:

1)顯示爲密碼

2)空輸入欄不顯示在所有的密碼,並有單獨的鏈接/菜單更改密碼。