Create a gist now

Instantly share code, notes, and snippets.

JavaのAESテストクラス
import java.io.UnsupportedEncodingException;
import java.security.InvalidAlgorithmParameterException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.codec.binary.Base64;
public class AesTest {
public static final String ENCRYPT_KEY = "1234567890123456";
public static final String ENCRYPT_IV = "abcdefghijklmnop";
/**
* メインメソッド
*
* @param args
*/
public static void main(String[] args) {
// 暗号化メソッド呼出
System.out.println(encrypt(args[0]));
// 復号化メソッド呼出
System.out.println(decrypt(encrypt(args[0])));
}
/**
* 暗号化メソッド
*
* @param text 暗号化する文字列
* @return 暗号化文字列
*/
public static String encrypt(String text) {
// 変数初期化
String strResult = null;
try {
// 文字列をバイト配列へ変換
byte[] byteText = text.getBytes("UTF-8");
// 暗号化キーと初期化ベクトルをバイト配列へ変換
byte[] byteKey = ENCRYPT_KEY.getBytes("UTF-8");
byte[] byteIv = ENCRYPT_IV.getBytes("UTF-8");
// 暗号化キーと初期化ベクトルのオブジェクト生成
SecretKeySpec key = new SecretKeySpec(byteKey, "AES");
IvParameterSpec iv = new IvParameterSpec(byteIv);
// Cipherオブジェクト生成
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
// Cipherオブジェクトの初期化
cipher.init(Cipher.ENCRYPT_MODE, key, iv);
// 暗号化の結果格納
byte[] byteResult = cipher.doFinal(byteText);
// Base64へエンコード
strResult = Base64.encodeBase64String(byteResult);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (NoSuchPaddingException e) {
e.printStackTrace();
} catch (InvalidKeyException e) {
e.printStackTrace();
} catch (IllegalBlockSizeException e) {
e.printStackTrace();
} catch (BadPaddingException e) {
e.printStackTrace();
} catch (InvalidAlgorithmParameterException e) {
e.printStackTrace();
}
// 暗号化文字列を返却
return strResult;
}
/**
* 復号化メソッド
*
* @param text 復号化する文字列
* @return 復号化文字列
*/
public static String decrypt(String text) {
// 変数初期化
String strResult = null;
try {
// Base64をデコード
byte[] byteText = Base64.decodeBase64(text);
// 暗号化キーと初期化ベクトルをバイト配列へ変換
byte[] byteKey = ENCRYPT_KEY.getBytes("UTF-8");
byte[] byteIv = ENCRYPT_IV.getBytes("UTF-8");
// 復号化キーと初期化ベクトルのオブジェクト生成
SecretKeySpec key = new SecretKeySpec(byteKey, "AES");
IvParameterSpec iv = new IvParameterSpec(byteIv);
// Cipherオブジェクト生成
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
// Cipherオブジェクトの初期化
cipher.init(Cipher.DECRYPT_MODE, key, iv);
// 復号化の結果格納
byte[] byteResult = cipher.doFinal(byteText);
// バイト配列を文字列へ変換
strResult = new String(byteResult, "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (NoSuchPaddingException e) {
e.printStackTrace();
} catch (InvalidKeyException e) {
e.printStackTrace();
} catch (IllegalBlockSizeException e) {
e.printStackTrace();
} catch (BadPaddingException e) {
e.printStackTrace();
} catch (InvalidAlgorithmParameterException e) {
e.printStackTrace();
}
// 復号化文字列を返却
return strResult;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment