Špatná znaková sada, to je evidentní na první pohled.

Databáze používá UTF-8 (zkusil jsem si to a výsledek sedí)

Kamil Podlešák

2010/10/15 Radovana Straube <[email protected]>:
> 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