Ja napr. jsem pouzil tuto konfiguraci (ale je pro SHA-256):
  <!-- Configure Authentication mechanism -->
  <authentication-manager alias="authenticationManager">
    <!-- SHA-256 values can be produced using 'echo -n
your_desired_password | sha256sum' (using normal *nix environments) -->
    <authentication-provider>
      <password-encoder ref="sha256PasswordEncoder">
        <salt-source ref="saltSource"/>
      </password-encoder>
      <jdbc-user-service data-source-ref="dataSource"
                         authorities-by-username-query="[hrozne dlouhej
select]"
                         users-by-username-query="[hrozne dlouhej select]"/>
    </authentication-provider>
  </authentication-manager>

  <beans:bean id="sha256PasswordEncoder"
             
class="org.springframework.security.authentication.encoding.ShaPasswordEncoder">
    <beans:constructor-arg value="256"/>
  </beans:bean>

  <beans:bean id="saltSource"
class="org.springframework.security.authentication.dao.ReflectionSaltSource">
    <beans:property name="userPropertyToUse" value="username"/>
  </beans:bean>
a pak v kodu pouzivam nasleduji cast kodu:

class ExampleEncode {
  @Autowired
  private PasswordEncoder passwordEncoder;

  @Autowired(required = false)
  private SaltSource saltSource;

  private String createPassword(final String name, final String password) {
    UserDetails userDetails = new User(name, password, true, true, true,
true,
        Collections.<GrantedAuthority>emptySet());
    final Object salt = saltSource != null ?
saltSource.getSalt(userDetails) : null;
    return passwordEncoder.encodePassword(password, salt);
  }
}

Do databaze jiz ukladam heslo, ktere je zahashovane a vse funguje v
pohode...


Petr Prochazka


On 15.10.2010 13:06, Radovana Straube wrote:
> Dobry den,
>
> pouzivam Spring Security, hesla su ulozene v databaze zacryptovane s MD5. Ked 
> sa v hesle nachadzaju znaky, ktore su v ASCII tabulke do pozicie 127, vsetko 
> funguje O.K., ale akonahle niekto v pouzije v hesle znaky nad 127, MD5-kou 
> vygenerovane hashe nesedia. Samozrejme, ze mozem zakazat pouzivat v heslach 
> znaky nad 127, ale aj tak by ma zaujimalo preco to nefunguje.
>
> Vypis z konfiguracie Spring Security:
> <authentication-manager>
>         <authentication-provider user-service-ref="userDetailsService" >
>             <password-encoder hash="md5"/>
>         </authentication-provider>
>     </authentication-manager>
>
> Vypis kodu, ktorym hashujem hesla:
> public static String encode(String _sPassword, String _sEncoding)
>             throws NoSuchAlgorithmException, UnsupportedEncodingException {
>     MessageDigest messageDigest = MessageDigest.getInstance("MD5");
>     messageDigest.update(_sPassword.getBytes(_sEncoding), 0,  
> _sPassword.length());
>     String hashedPass = new BigInteger(1, 
> messageDigest.digest()).toString(16);
>     if (hashedPass.length() < 32) {
>         hashedPass = "0" + hashedPass;
>     }
>     return hashedPass;
> }
>
> Asi by bolo riesenim zistit kde sa nachadza metoda, ktoru pouziva Spring na 
> MD5 hashovanie a pouzit priamo tu, ale to sa mi bohuzial nepodarilo.
>
> Robila som zopar pokusov aj s MySQL (kodovanie latin1) databazou. Ked 
> napriklad zavolam moju Javovsku metodu encode("§", "ISO-8859-1"), 
> tak je vysledok:
> 6b2b98fea11e51af3043b192f719bd69
>
> ale pri zavolani
> SELECT md5("§");
> je vysledok:
> bd9a4c255deec8944d99e01a64c1e322
>
> Vedel by prosim niekto poradit co robim nespravne? Dakujem
>
> Radovana Straube
>
>
>       
>

Odpovedet emailem