Beispiel für einen Java Digest-Algorithmus für die Verschlüsselung
Dieser Java-Algorithmus veranschaulicht die Erstellung eines Digest-Tokens aus einem HTTP-Header.
Dieses Beispiel setzt Folgendes voraus:
- Der Webserver unterstützt Java
- Die Hash-Berechnungsmethode ist SHA1
- Der Wert des geheimen Schlüssels ist abc123
- Der unverschlüsselte HTTP-Header-Name ist user_name
Ändern Sie den Java-Code, um einen anderen Hash-Berechnungsmechanismus (z. B. MD5) zu verwenden, ändern Sie den Wert des geheimen Schlüssels oder den HTTP-Header-Namen.
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)));
}
}