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@145: private static String algoritmus = "SHA-512"; franta-hg@145: private static String kodovani = "UTF-8"; franta-hg@52: franta-hg@145: private static String prevedNaHex(byte[] data) { franta-hg@145: StringBuilder vysledek = new StringBuilder(); franta-hg@145: for (int i = 0; i < data.length; i++) { franta-hg@145: int pulBajt = (data[i] >>> 4) & 0x0F; franta-hg@145: int dvePulky = 0; franta-hg@145: do { franta-hg@145: if ((0 <= pulBajt) && (pulBajt <= 9)) { franta-hg@145: vysledek.append((char) ('0' + pulBajt)); franta-hg@145: } else { franta-hg@145: vysledek.append((char) ('a' + (pulBajt - 10))); franta-hg@145: } franta-hg@145: pulBajt = data[i] & 0x0F; franta-hg@145: } while (dvePulky++ < 1); franta-hg@52: } franta-hg@145: return vysledek.toString(); franta-hg@52: } franta-hg@52: franta-hg@145: /** franta-hg@145: * @param text vstupní text franta-hg@145: * @return hashovaný text v HEX tvaru franta-hg@145: * @throws NoSuchAlgorithmException neexistující hashovací algoritmus franta-hg@145: * @throws UnsupportedEncodingException nepodporované kódování znaků franta-hg@145: * @throws NullPointerException pokud je vstup null franta-hg@145: */ franta-hg@145: public static String hashuj(String text) throws NoSuchAlgorithmException, UnsupportedEncodingException { franta-hg@145: MessageDigest md; franta-hg@145: md = MessageDigest.getInstance(algoritmus); franta-hg@145: byte[] hash = new byte[40]; franta-hg@145: md.update(text.getBytes(kodovani), 0, text.length()); franta-hg@145: hash = md.digest(); franta-hg@145: return prevedNaHex(hash); franta-hg@145: } franta-hg@52: }