서버와 통신시 json를 이용하여 통신하려고 합니다.
이때 TripleDES를 이용해서 복호화를 하려고 하는데
javax.crypto.BadPaddingException: pad block corrupted
final byte[] seed_key = ("asdfweASDFWER4wqwe2safd8").getBytes();
public String decrypt(String text){
SecretKeySpec keySpec = new SecretKeySpec(seed_key,"DESede");
Cipher nCipher;
try {
nCipher = Cipher.getInstance("DESede/ECB/PKCS5Padding");
nCipher.init( Cipher.DECRYPT_MODE, keySpec);
byte[] cipherbyte = nCipher.doFinal(text.getBytes());
return new String(cipherbyte, "UTF8");
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Log.e(TAG, "E : "+e.toString());
} catch (NoSuchPaddingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Log.e(TAG, "E : "+e.toString());
} catch (InvalidKeyException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Log.e(TAG, "E : "+e.toString());
} catch (IllegalBlockSizeException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Log.e(TAG, "E : "+e.toString());
} catch (BadPaddingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Log.e(TAG, "E : "+e.toString());
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Log.e(TAG, "E : "+e.toString());
}
return "False";
}
혹시나 싶어서 php 암호화 소스입니다.
$s_vector_iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_3DES, MCRYPT_MODE_ECB), MCRYPT_RAND);
$s_key = "asdfweASDFWER4wqwe2safd8";
$en_str = mcrypt_encrypt(MCRYPT_3DES, $s_key, $_REQUEST['Pass'], MCRYPT_MODE_ECB, $s_vector_iv);
$en_base64 = base64_encode($en_str);
$en_hex = bin2hex($en_str);




자바 JCE에서는 암복호화 할때 padding 값을 넣지 않아도 에러는 안나는데 php라서 그런가요.. 음..
(암호화 > 블록화 과정이 있었는지 없었는지, 어떠한 코드로 하였는지 알고나서
nCipher = Cipher.getInstance("DESede/ECB/PKCS5Padding") <--전 요부분이 의심되네요 ^^;
php를 안해봐서 딱 집어서 말씀드리기가 머하네요 ㅎㅎ;;
근데 대칭 암호화중 가장 성능 떨어지는걸루 하시는 이유가.. ^^;; (파일 하나하나에 대한 암/복호화는 체감으로 못느끼지만, 속도 비교해보면 확실히 느립니다. ;; 지금 맹글어둔 문서가 없어서 몇배~ 머 이런건 못쓰겠네요. ㅎㅎ)