2017-09-04 3 views
0

데이터를 암호화 한 데이터베이스를 읽었습니다. 내용을 해독 할 수는 있지만 암호화 한 내용은 해독 할 수 없습니다. 결과는 다릅니다 :Android AES/CBC/PKCS5Padding 암호화

다음
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding", "BC"); 
SecretKey skey = new SecretKeySpec(key, 0, key.length, "AES"); 

내가 문자열을 해독하는 방법입니다

public byte[] decrypt(byte[] data) {                                                        
    byte[] result = new byte[0];                          
    try {                               
     cipher.init(DECRYPT_MODE, skey, new IvParameterSpec(iv));                 

     InflaterInputStream inflaterStream = new InflaterInputStream(
      new CipherInputStream(new ByteArrayInputStream(data), cipher)); 
     return IOUtils.toByteArray(inflaterStream);                     
    } catch (Exception e) {                           
     e.printStackTrace();                           
     return result;                            
    }                                
} 

을 그리고 여기에 내가 문자열 암호화 방법입니다

public byte[] encrypt(byte[] data) {                               
    try {                               
     cipher.init(ENCRYPT_MODE, skey, new IvParameterSpec(iv));                 
     DeflaterInputStream deflaterInput = new DeflaterInputStream(
      new CipherInputStream(new ByteArrayInputStream(data), cipher)); 

     return IOUtils.toByteArray(deflaterInput);                     
    } catch (Exception e) {                           
     e.printStackTrace();                          
     return new byte[0];                           
    }                                
} 

오류 나는이입니다 얻을 :

W/System.err: java.util.zip.ZipException: incorrect header check 
W/System.err:  at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:170) 
W/System.err:  at java.io.FilterInputStream.read(FilterInputStream.java:107) 
W/System.err:  at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:2146) 
W/System.err:  at org.apache.commons.io.IOUtils.copy(IOUtils.java:2102) 
W/System.err:  at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:2123) 
W/System.err:  at org.apache.commons.io.IOUtils.copy(IOUtils.java:2078) 
W/System.err:  at org.apache.commons.io.IOUtils.toByteArray(IOUtils.java:721) 
+0

"java.util.zip.ZipException : incorrect header check"오류는 암호화/암호 해독과 관련이 없습니다. Java zip 유틸리티가 유효한 Zip 파일을 생각하지 않는다고합니다. 파일이 tar 또는 gzip과 같은 다른 알고리즘을 사용하여 압축되어있을 수 있으며 해당 Java 사용법을 사용해야 할 수도 있습니다. – Roshith

답변

2

str의 중첩 암호화에 대한 eams가 올바르지 않습니다. 암호화는 암호 해독에

new CipherInputStream(new DeflaterInputStream(new ByteArrayInputStream(data)), cipher); 

그것은 당신이 그것을 가지고하고 정확한 방법입니다

new InflaterInputStream(new CipherInputStream(new ByteArrayInputStream(data), cipher)); 

해야해야한다.

+0

당신은 구세주입니다! –