2011-01 / 2011-01-25

前のエントリ: PKCS#5パディングでAES暗号化/復号 [perl]
次のエントリ: エミュレータでパケットキャプチャ [Android]

PKCS#5パディングでAES暗号化/復号
2011-01-25-2 / カテゴリ: [暗号][Java][Android] / [permlink]

初のAndroidネタ。というかJavaネタも初だった^^;

Androidは初学者だからもっと初学者ネタ(環境構築とか?)でもと思ったけど、入門系情報はたくさんあるので、うちらしく戯術っぽく小ネタで(ぇ

ソース
	public byte[] cryptAes(boolean encrypt, byte[] iv, byte[] key, byte[] enc)
	throws NoSuchAlgorithmException,
			NoSuchPaddingException,
			InvalidKeyException,
			InvalidAlgorithmParameterException,
			IllegalBlockSizeException,
			BadPaddingException {
		// ivは16byte限定
		// keyは128/196/256byte限定
		AlgorithmParameterSpec	ivSpec = new IvParameterSpec(iv);
		Key		k = new SecretKeySpec(key, "AES");
		Cipher	ch = Cipher.getInstance("AES/CBC/PKCS5Padding");
		if (encrypt) {
			ch.init(Cipher.ENCRYPT_MODE, k, ivSpec);
		}
		else {
			ch.init(Cipher.DECRYPT_MODE, k, ivSpec);
		}
		byte[] crypted = ch.doFinal(enc);

		return crypted;
	}
こんな感じ。のはず。(Javaは自信がない…)
やっていることは、Perl版のこっちとまったく同じ[2011-01-25-1]

AndroidでAES暗号化は、ググっても自分が理解できる__日本語の__ピンポイントな情報が見つけられなかったのでメモ。
Perlのコードと相互に変換できるから大丈夫と思う。

IVは128bit(16byte)以外の指定で InvalidAlgorithmParameterException (VI must be 16 bytes long)が発生する。
共通鍵は128bit(16byte),192bit(24byte),256bit(32byte)以外の指定で InvalidKeyException (Key length not 128/192/256 bits)が発生する。
 
なお、Cipher.getInstance()に指定できるパラメタ(暗号アルゴリズム、モード)はここに一覧あり。情報をくれた@gimvelkさん、ありがとうございました。
DESなら"DES/CBC/PKCS5Padding"、3DESなら"DESede/CBC/PKCS5Padding"など。(DESはすでにアレなんでセンシティブなデータに使わないように)

また、暗号のプロバイダに関する情報を@zaki50さんからいただきました。
androidとGAEでRSA暗号 - 明日の鍵

でも、暗号サービスプロバイダはよくわかってないんだよな^^; 実際の処理を行ってるライブラリが何か、みたいな話みたいだけど。
海外のプラットフォームで暗号周りは輸出規制なんかでいろいろあるからな…
前のエントリ: PKCS#5パディングでAES暗号化/復号 [perl]
次のエントリ: エミュレータでパケットキャプチャ [Android]

2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12

最終更新時間: 2013-05-02 16:12