秘密鍵暗号化方式で暗号化
javax.crypto パッケージを使って、文字列を暗号化して同じ鍵を使用して復号化します。
秘密鍵の生成には KeyGenerator の generateKey() を使用し、暗号化、復号化には Cipher の doFinal を使用します。
以下にアルゴリズムに AES を使用した場合の暗号化、復号化の実装例を書きます。
コード記述例
public static void main(String[] args) {
try {
SecretKey key = KeyGenerator.getInstance("AES").generateKey();
Cipher aes = Cipher.getInstance("AES");
HexDumpEncoder enc = new HexDumpEncoder();
byte[] text = "暗号化テスト".getBytes();
System.out.println(enc.encode(text));
// 暗号化
aes.init(Cipher.ENCRYPT_MODE, key);
byte[] encryptText = aes.doFinal(text);
System.out.println(enc.encode(encryptText));
// 複合化
aes.init(Cipher.DECRYPT_MODE, key);
byte[] decryptText = aes.doFinal(encryptText);
System.out.println(enc.encode(decryptText));
} catch (Exception e) {
e.printStackTrace();
}
}
出力結果
上から順に 元テキスト → 暗号化配列 → 復元されたテキスト です。
0000: 88 C3 8D 86 89 BB 83 65 83 58 83 67
0000: EF A2 F1 18 3A B6 7D 16 7B 89 F9 E3 27 4B 48 F4 ....:.......'KH.
0000: 88 C3 8D 86 89 BB 83 65 83 58 83 67
|