안드로이드 개발 질문/답변
(글 수 45,052)
안녕하세요
현재 서버에서 암호화해서 내려준 파일에 대해 복호화를 하려고 하는데요
AES ECB 모드로 복호화하는데
암호화 키가 가변적인 길이의 String 인데요
예로 String = "appleandpineapple";
이런 가변적인 길이의 문자를 이용해 키를 생성하려면 어떻게 해야하죠..?
일단 소스 참조해봅니다..
public static String keyString = "abcdefghijklmnopqrstu";
public static byte[] decrypt3(byte[] encrypted) throws Exception{
KeyGenerator keygen = KeyGenerator.getInstance("AES");
SecureRandom sec = new SecureRandom(keyString.getBytes());
keygen.init(128, sec);
Key key = keygen.generateKey();
byte[] rawkey = getRawKey(key.getEncoded());
SecretKeySpec skeySpec = new SecretKeySpec(rawkey, "AES");
Cipher cipher = Cipher.getInstance("AES/ECB/NoPadding");
cipher.init(Cipher.DECRYPT_MODE, skeySpec);
byte[] decrypted = cipher.doFinal(encrypted); <-- 이부분에서 아래 에러발생..
현재 서버에서 암호화해서 내려준 파일에 대해 복호화를 하려고 하는데요
AES ECB 모드로 복호화하는데
암호화 키가 가변적인 길이의 String 인데요
예로 String = "appleandpineapple";
이런 가변적인 길이의 문자를 이용해 키를 생성하려면 어떻게 해야하죠..?
일단 소스 참조해봅니다..
public static String keyString = "abcdefghijklmnopqrstu";
public static byte[] decrypt3(byte[] encrypted) throws Exception{
KeyGenerator keygen = KeyGenerator.getInstance("AES");
SecureRandom sec = new SecureRandom(keyString.getBytes());
keygen.init(128, sec);
Key key = keygen.generateKey();
byte[] rawkey = getRawKey(key.getEncoded());
SecretKeySpec skeySpec = new SecretKeySpec(rawkey, "AES");
Cipher cipher = Cipher.getInstance("AES/ECB/NoPadding");
cipher.init(Cipher.DECRYPT_MODE, skeySpec);
byte[] decrypted = cipher.doFinal(encrypted); <-- 이부분에서 아래 에러발생..
javax.crypto.BadPaddingException: pad block corrupted
return decrypted;
}