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