암호화를 위한 샘플 Java 다이제스트 알고리즘
이 Java 알고리즘은 HTTP 헤더에서 다이제스트 토큰을 만드는 방법을 보여줍니다.
이 샘플에서는 다음을 가정합니다.
- 웹 서버는 Java를 지원합니다.
- 해시 계산 방법은 SHA1입니다.
- 비밀 키 값은 abc123입니다.
- 암호화되지 않은 HTTP 헤더 이름은 user_name
다른 해시 계산 메커니즘(예: MD5)을 사용하도록 Java 코드를 변경하고, 비밀 키 값 또는 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)));
}
}