안드로이드 개발 질문/답변
(글 수 45,052)
안녕하세요
안드로이드 환경에서 AES 암호화를 적용하고자 합니다.
그런데 SEED 값을 기반으로 rawKey 값을 이용하여 암호화를 하는데 이 rawKey가
PC에서 돌릴때와 android에서 돌릴때 다르게 나타납니다.
private static byte[] getRawKey(byte[] seed) throws Exception
{
KeyGenerator kgen = KeyGenerator.getInstance("AES");
SecureRandom sr = SecureRandom.getInstance("SHA1PRNG");
sr.setSeed(seed);
kgen.init(128, sr); // 192 and 256 bits may not be available
SecretKey skey = kgen.generateKey();
byte[] raw = skey.getEncoded();
return raw;
}
결국 raw 값이 PC, Android 에서 다르게 나오는데 이를 해결할 방안이 있나요?
byte 의 첫번째 비트 처리 문제인듯 합니다.
컴퓨터랑 안드로이드 단말에서 출력하는 같이 다를 것으로 예상됩니다.
byte에 입력되는 같을 logcat 을 이용해서 10진수로 확인해 보세요.
컴이랑 아마 다를 거에요.
컴퓨터에 있는 소스랑 같이 사용하고 싶으면 ndk로 만들어서
그냥 java단에서는 입력과 결과만 처리하는 것이 좋아 보이네요.