/** * @author Alexandre Correia - alexandrecorreia@celepar.pr.gov.br * @ Calculo do hash para autenticacao Digest */ package nu.fw.jeti.util; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class Digest { private byte[] gHash(String frase, String algoritmo) { try { MessageDigest md = MessageDigest.getInstance(algoritmo); md.update(frase.getBytes()); return md.digest(); } catch (NoSuchAlgorithmException e) { return null; } } private String stringHexa(byte[] bytes) { StringBuilder s = new StringBuilder(); for (int i = 0; i < bytes.length; i++) { int parteAlta = ((bytes[i] >> 4) & 0xf) << 4; int parteBaixa = bytes[i] & 0xf; if (parteAlta == 0) s.append('0'); s.append(Integer.toHexString(parteAlta | parteBaixa)); } return s.toString(); } public String hashMD5(String nonce, String cnonce, String qop, String uri, String user, String password, String realm) { String HA1 = stringHexa(gHash( user + ":" + realm + ":" + password, "MD5")); String nc = "00000001"; String HA2 = stringHexa(gHash(uri, "MD5")); String DigestPROXY = HA1 + ":" + nonce + ":" + nc + ":" + cnonce + ":" + qop + ":" + HA2; return stringHexa(gHash(DigestPROXY, "MD5")); } }