私はAndroidのアプリケーションでデータ(画像)を復号化していますが、IOExceptionをスローします。私は本当にそれを修正する方法はわかりません.PNG画像ファイルを暗号化しているときは、例外はスローされず、アプリケーションはリストビューで画像を読み込むことができます。しかし、jpgファイルを暗号化しているとき私は、この例外をスロー:PHPでの暗号化、Javaでの暗号化:IOException:ブロックサイズが一致していないデータ
:08-04 06:36:54.734: WARN/System.err(254): java.io.IOException: data not block size aligned
08-04 06:36:54.734: WARN/System.err(254): at javax.crypto.CipherInputStream.read(CipherInputStream.java:97)
08-04 06:36:54.734: WARN/System.err(254): at javax.crypto.CipherInputStream.read(CipherInputStream.java:152)
08-04 06:36:54.734: WARN/System.err(254): at java.io.BufferedInputStream.fillbuf(BufferedInputStream.java:183)
08-04 06:36:54.734: WARN/System.err(254): at java.io.BufferedInputStream.read(BufferedInputStream.java:346)
08-04 06:36:54.734: WARN/System.err(254): at android.graphics.BitmapFactory.nativeDecodeStream(Native Method)
08-04 06:36:54.734: WARN/System.err(254): at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:459)
08-04 06:36:54.734: WARN/System.err(254): at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:515)
08-04 06:36:54.734: WARN/System.err(254): at com.custom.lazylist.ImageLoader.getBitmap(ImageLoader.java:105)
08-04 06:36:54.734: WARN/System.err(254): at com.custom.lazylist.ImageLoader.access$0(ImageLoader.java:75)
08-04 06:36:54.734: WARN/System.err(254): at com.custom.lazylist.ImageLoader$PhotosLoader.run(ImageLoader.java:228)
私はそれは問題はおそらくcode.Hereは、JavaコードとPHPのコードで暗号化および復号化でNoPaddingを使用しているということ、インターネット上で読みます
JAVA
try {
Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");
SecretKeySpec keySpec = new SecretKeySpec("abcde".getBytes(), "AES");
IvParameterSpec ivSpec = new IvParameterSpec("fedcba".getBytes());
cipher.init(Cipher.DECRYPT_MODE, keySpec, ivSpec);
AssetManager is = this.getAssets();
InputStream fis = is.open("card2_encrypted.jpg");
CipherInputStream cis = new CipherInputStream(fis, cipher);
FileOutputStream fos = new FileOutputStream(
new File(Environment.getExternalStorageDirectory(), "card2_decrypted.jpg"));
byte[] b = new byte[8];
int i;
while ((i = cis.read(b)) != -1) {
fos.write(b, 0, i);
}
fos.flush(); fos.close();
cis.close(); fis.close();
}
catch(Exception e){
e.fillInStackTrace();
Log.v("Error","Error "+e);
}
}
とPHPコード:
<?php
$secret_key = "abcde";
$iv = "fedcba";
$infile = "ss1.jpg";
$outfile = "ss1_encrypted.jpg";
$crypttext = file_get_contents($infile);
$plaintext = mcrypt_encrypt(MCRYPT_RIJNDAEL_128,
$secret_key, $crypttext, MCRYPT_MODE_CBC, $iv);
header('Content-Type: application/octet-stream');
header('Content-Length: ' . strlen($plaintext));
header('Content-Disposition: attachment; filename=' . ($outfile));
echo $plaintext;
?>
だから私のquesionは、私はPHPのパディングとJavaコードとその原料を修正することができる方法ですので、私は私のイメージをロードすることができます私のapp.Thanks助けをたくさんありがとう!
こちらを参照してくださいhttp://stackoverflow.com/questions/4217920/java-des-in-phpとhttp://tsrini.blogspot.com /2009/12/encrypt-in-java-and-decrypt-in-php.htmlこれらはあなたを助けるかもしれません –