Exemple d’algorithme Java Digest pour le chiffrement
Cet algorithme Java illustre la création d’un jeton de synthèse à partir d’un en-tête HTTP.
Cet exemple suppose que :
- Le serveur Web prend en charge Java
- La méthode de calcul du hachage est SHA1
- La valeur de clé secrète est abc123
- Le nom de l’en-tête HTTP non chiffré est user_name
Modifiez le code Java pour utiliser un autre mécanisme de calcul de hachage (tel que MD5), modifiez la valeur de clé secrète ou le nom de l’en-tête 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)));
}
}