2011-11-13 61 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