franta-hg@52: package cz.frantovo.nekurak.util; franta-hg@52: franta-hg@52: import java.io.UnsupportedEncodingException; franta-hg@52: import java.security.MessageDigest; franta-hg@52: import java.security.NoSuchAlgorithmException; franta-hg@52: franta-hg@52: /** franta-hg@52: * Pomocná třída pro počítání hashů. franta-hg@52: * @author fiki franta-hg@52: */ franta-hg@52: public class Hash { franta-hg@52: franta-hg@53: private static String algoritmus = "SHA-512"; franta-hg@52: private static String kodovani = "UTF-8"; franta-hg@52: franta-hg@52: private static String prevedNaHex(byte[] data) { franta-hg@52: StringBuffer vysledek = new StringBuffer(); franta-hg@52: for (int i = 0; i < data.length; i++) { franta-hg@52: int pulBajt = (data[i] >>> 4) & 0x0F; franta-hg@52: int dvePulky = 0; franta-hg@52: do { franta-hg@52: if ((0 <= pulBajt) && (pulBajt <= 9)) { franta-hg@52: vysledek.append((char) ('0' + pulBajt)); franta-hg@52: } else { franta-hg@52: vysledek.append((char) ('a' + (pulBajt - 10))); franta-hg@52: } franta-hg@52: pulBajt = data[i] & 0x0F; franta-hg@52: } while (dvePulky++ < 1); franta-hg@52: } franta-hg@52: return vysledek.toString(); franta-hg@52: } franta-hg@52: franta-hg@52: /** franta-hg@52: * @param text vstupní text franta-hg@52: * @return hashovaný text v HEX tvaru franta-hg@52: * @throws NoSuchAlgorithmException neexistující hashovací algoritmus franta-hg@52: * @throws UnsupportedEncodingException nepodporované kódování znaků franta-hg@123: * @throws NullPointerException pokud je vstup null franta-hg@52: */ franta-hg@52: public static String hashuj(String text) throws NoSuchAlgorithmException, UnsupportedEncodingException { franta-hg@52: MessageDigest md; franta-hg@52: md = MessageDigest.getInstance(algoritmus); franta-hg@52: byte[] hash = new byte[40]; franta-hg@52: md.update(text.getBytes(kodovani), 0, text.length()); franta-hg@52: hash = md.digest(); franta-hg@52: return prevedNaHex(hash); franta-hg@52: } franta-hg@52: }