2017-09-04 12 views
0

暗号化されたデータを持つデータベースを読んでいます。私は内容を解読することができますが、私は暗号化したものを解読することはできません。結果は異なっている:ここではAndroid AES/CBC/PKCS5パディング暗号化

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:不正なヘッダーのチェック"は、暗号化/復号化とは関係ありません。それは、Javaのzipユーティリティは、その有効なZipファイルを考えていないと言います。ファイルが他のいくつかのアルゴリズム、例えばtarやgzipを使って圧縮されている可能性があります。そうすれば、Javaのutilitiesを使用しなければならないかもしれません。 – Roshith

答えて

2

strのネスト暗号化に関する電子メールが正しくありません。暗号化にはそれが解読オン

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

である必要があり、それはあなたがそれを持っていた方法で、正しい

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

でなければなりません。

+0

あなたは救い主です! –