2012-05-01 2 views
1

파일을 암호화하고 해독해야하는 앱을 작성 중입니다. 내 문제는 암호 해독이 암호화보다 5 배 정도 느린 것입니다. 모든 파일 읽기/쓰기 작업을 제거하고 암호화 프로세스 만 벤치마킹했습니다. javax의 인스턴스 인AES 암호화와 암호 해독 속도 사이의 이상한 차이

은 (javax.crypto.Cipher에의 인스턴스) encryptionCipher.doFinal() 1.5 MB 바이트 배열

~1600 ms

은 (decryptionCipher.doFinal() 1.5 MB의 바이트 배열을 해독 암호화 : 결과는 매우 놀라웠다 내가 AES 암호 해독 및 암호화는 대칭 PROC입니다 알고 있기 때문에 .crypto.Cipher)

~5800 ms

나는 매우 당황 스럽네요 암호화 및 해독 속도에는 차이가 없어야합니다.

나는 256 비트 키를 가진 AES/CBC/PKCS7Padding 암호를 사용하고 있습니다.

어떻게 될 수 있습니까?

+0

사실 CBC 해독 모드가 암호화보다 빠르지 만 (블록 해독을 병렬 처리 할 수 ​​있어야 함) [CBC 모드] (http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Cipher-block_chailable_.28CBC.29)) – sergico

+0

앱을 프로파일 링하여 시간이 얼마나 걸리는지 확인하십시오. 비효율적 인 구현 일 수 있습니다. 또는 앱에 Spongy Castle 제공 업체를 포함시키고 타이밍 로그 문을 추가하십시오. 다른 공급자 (Sun/Oracle, Bouncy Castle 등)가있는 데스크톱 컴퓨터에서 동일한 코드와 비교하십시오. –

답변

0

코드 변환 및 사용 가능한 리소스 부족으로 인해 암호화 및 암호 해독에 Android 시간이 오래 걸릴 수 있습니다. JNI는 이와 같은 작업에 우선합니다. openssl 루틴을 사용하여 JNI 인터페이스를 통해 Java 코드에서 암호화 및 암호 해독하고 호출하십시오.