Exemplo de algoritmo resumido do Java para criptografia
Este algoritmo Java ilustra a criação de um token de resumo a partir de um cabeçalho HTTP.
Este exemplo pressupõe:
- Que o servidor Web é compatível com Java
- Que o método de cálculo de hash é SHA1
- Que o valor da chave secreta é abc123
- Que o nome do cabeçalho HTTP não criptografado é user_name
Mude o código Java para usar outro mecanismo de computação de hash (como MD5), mude o valor da chave secreta ou o nome do cabeçalho HTTP.
public class DigestTest
{
private static final String MAC_ALG = "HmacSHA256";
fKey = {32 or more characters};
public byte[] getDigest(String acct) {
try {
byte[] bkey = fKey.getBytes();
byte[] data = acct.getBytes();
Mac mac = null;
try {
mac = Mac.getInstance(MAC_ALG);
mac.init(new SecretKeySpec(bkey, MAC_ALG));
} catch (Exception e) {
e.printStackTrace();
}
byte[] sig = mac.doFinal(data);
String signature = new String(sig);
System.out.println("value:" + acct);
System.out.println("digested value: " + signature);
return sig;
} catch (IllegalStateException e) {
e.printStackTrace();
}
return null;
}
public static void main(String[] args) {
BASE64Encoder encoder = new BASE64Encoder();
DigestTest test = new DigestTest();
String userName = "user_name";
System.out.println("base 64 digest username: " + encoder.encode(test.getDigest(userName)));
}
}