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