CSRF/XSRF ochrana při hlasování.
1 package cz.frantovo.nekurak.util;
3 import java.io.UnsupportedEncodingException;
4 import java.security.MessageDigest;
5 import java.security.NoSuchAlgorithmException;
8 * Pomocná třída pro počítání hashů.
13 private static String algoritmus = "SHA-512";
14 private static String kodovani = "UTF-8";
16 private static String prevedNaHex(byte[] data) {
17 StringBuilder vysledek = new StringBuilder();
18 for (int i = 0; i < data.length; i++) {
19 int pulBajt = (data[i] >>> 4) & 0x0F;
22 if ((0 <= pulBajt) && (pulBajt <= 9)) {
23 vysledek.append((char) ('0' + pulBajt));
25 vysledek.append((char) ('a' + (pulBajt - 10)));
27 pulBajt = data[i] & 0x0F;
28 } while (dvePulky++ < 1);
30 return vysledek.toString();
34 * @param text vstupní text
35 * @return hashovaný text v HEX tvaru
36 * @throws NoSuchAlgorithmException neexistující hashovací algoritmus
37 * @throws UnsupportedEncodingException nepodporované kódování znaků
38 * @throws NullPointerException pokud je vstup null
40 public static String hashuj(String text) throws NoSuchAlgorithmException, UnsupportedEncodingException {
42 md = MessageDigest.getInstance(algoritmus);
43 byte[] hash = new byte[40];
44 md.update(text.getBytes(kodovani), 0, text.length());
46 return prevedNaHex(hash);