디컴파일로인한 키유출까지 걱정해야 할 만큼 중요한 데이터라면,
keyStore에 해당 암호화 키를 저장 시키고 keyStore엑세서 만드셔서 키스토어에서
암호화키 빼와서 사용하는 방법으로 하시면 되겠습니다.
java.security 패키지에 키스토어 관련 클래스 있으니 살펴보시구요.
그리고 안드로이드에서는 JCEKS 형식 SunJCE 프로바이더 지원안하는 걸로 알고있으니까
BKS 형식 키스토어에다가 암호화 키 저장하셔야 합니다.
여기에 더 완벽하게 하실라면, keystore에는 디펄트키를 저장해두시구요.
처음에 어플실행할때 서버에 디펄트키로 인증을해서 서버로부터 데이터를 암호화할 암호화키를
받아오세요. 암호화키는 어플에서 요청이 올때마다
시간,날짜뭐 등등 단말고유값 같은걸로 계산해서 만드셔서 사용하시면,
실질적으로 제3자가 데이터를 암호화한데 사용한 암호화키를 얻는건 불가능하다고 봅니다.
물론 이 경우 단말에 대응하는 각각의 암호화키가 만들어 질태니
간단하지는 않고, 작업 볼륨이 좀 있을겁니다.