暗号化のためのサンプル Java ダイジェストアルゴリズム
この Java アルゴリズムは、HTTP ヘッダーからダイジェストトークンを作成する方法を示しています。
この例では、以下を前提としています。
- Web サーバーは 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)));
}
}