2012年8月28日火曜日

[Android]AES暗号化と復号化

Android側で暗号化したデータをサーバに送信し、
サーバ側(php)でデータを復号を行ったときのメモ。


Androidアプリ


String encodeKey = "YOUR_ENCODE_KEY";
String value = "ENCODE_VALUE";

// キー生成
SecretKey key = new SecretKeySpec(encodeKey.getBytes(), "AES");
// 初期化
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, key);
// エンコード処理
byte[] encryptBin = cipher.doFinal(value.getBytes());
// BASE64に変換
String encodedValue = new String(Base64.encode(encryptBin, Base64.DEFAULT));




サーバ(PHP)



function mc_decrypt($decrypt) {
$mc_key = 'YOUR_ENCODE_KEY';
$decoded = base64_decode($decrypt);
$iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB), MCRYPT_RAND);
$decrypted = trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $mc_key, trim($decoded), MCRYPT_MODE_ECB, $iv));
    return rtrim( pkcs5_unpad($decrypted) ); } function pkcs5_unpad($text) { $pad = ord($text{strlen($text)-1}); if ($pad > strlen($text)) return false; if (strspn($text, chr($pad), strlen($text) - $pad) != $pad) return false; return substr($text, 0, -1 * $pad); }



0 件のコメント:

コメントを投稿