2011-11-13 96 views
1

說我用StandardPasswordEncoder哈希密碼,它使用SHA-256和8位隨機字符作爲鹽並保存到數據庫(例如註冊表單)。春季安全:密碼編碼器和StandardPasswordEncoder

然後我用

<security:password-encoder hash="sha-256" > 
</security:password-encoder> (for login form) 

檢查這是否最新知道第一的方式,鹽是8個字節的隨機生成的鹽的編碼呢?即使它知道如何找出應用什麼鹽來獲得相同的散列?

或者,也許我完全偏離了軌道,SHA-256標準已經假定應該有嚴格的8位哈希內生成的鹽?

感謝,

回答

1

解決它,我不會進入細節,但最好使用org.springframework.security.authentication.encoding.ShaPasswordEncoder,

<bean id ="passwordEncoder" class="org.springframework.security.authentication.encoding.ShaPasswordEncoder" > 
<constructor-arg value="256"/> 
<property name="iterations" value="1024"/> 
</bean> 

和參考這個bean從您的安全上下文:

  <security:password-encoder ref="passwordEncoder"> 
      <security:salt-source user-property="username"/> 
     </security:password-encoder> 
+0

這個的缺點是ShaPasswordEncoder實現的,而不是較新org.springframework.security.crypto.password.PasswordEncod棄用的PasswordEncoder,呃 – Phil