java/nekurak.net-lib/src/cz/frantovo/nekurak/util/Hash.java
changeset 52 4c0408690ebf
child 53 d76be0124c40
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/java/nekurak.net-lib/src/cz/frantovo/nekurak/util/Hash.java	Thu Mar 04 14:09:21 2010 +0100
     1.3 @@ -0,0 +1,47 @@
     1.4 +package cz.frantovo.nekurak.util;
     1.5 +
     1.6 +import java.io.UnsupportedEncodingException;
     1.7 +import java.security.MessageDigest;
     1.8 +import java.security.NoSuchAlgorithmException;
     1.9 +
    1.10 +/**
    1.11 + * Pomocná třída pro počítání hashů.
    1.12 + * @author fiki
    1.13 + */
    1.14 +public class Hash {
    1.15 +
    1.16 +    private static String algoritmus = "SHA-1";
    1.17 +    private static String kodovani = "UTF-8";
    1.18 +
    1.19 +    private static String prevedNaHex(byte[] data) {
    1.20 +	StringBuffer vysledek = new StringBuffer();
    1.21 +	for (int i = 0; i < data.length; i++) {
    1.22 +	    int pulBajt = (data[i] >>> 4) & 0x0F;
    1.23 +	    int dvePulky = 0;
    1.24 +	    do {
    1.25 +		if ((0 <= pulBajt) && (pulBajt <= 9)) {
    1.26 +		    vysledek.append((char) ('0' + pulBajt));
    1.27 +		} else {
    1.28 +		    vysledek.append((char) ('a' + (pulBajt - 10)));
    1.29 +		}
    1.30 +		pulBajt = data[i] & 0x0F;
    1.31 +	    } while (dvePulky++ < 1);
    1.32 +	}
    1.33 +	return vysledek.toString();
    1.34 +    }
    1.35 +
    1.36 +    /**
    1.37 +     * @param text vstupní text
    1.38 +     * @return hashovaný text v HEX tvaru
    1.39 +     * @throws NoSuchAlgorithmException neexistující hashovací algoritmus
    1.40 +     * @throws UnsupportedEncodingException nepodporované kódování znaků
    1.41 +     */
    1.42 +    public static String hashuj(String text) throws NoSuchAlgorithmException, UnsupportedEncodingException {
    1.43 +	MessageDigest md;
    1.44 +	md = MessageDigest.getInstance(algoritmus);
    1.45 +	byte[] hash = new byte[40];
    1.46 +	md.update(text.getBytes(kodovani), 0, text.length());
    1.47 +	hash = md.digest();
    1.48 +	return prevedNaHex(hash);
    1.49 +    }
    1.50 +}