このエラーについて読みましたが、何も機能していないようです。
AES 復号化の機能は次のとおりです。
public static byte[] decrypted_Data(byte[] crypt) throws Exception {
String seed = "SuperSecretPassword";
KeyGenerator keygen = KeyGenerator.getInstance("AES");
SecureRandom secrand = SecureRandom.getInstance("SHA1PRNG");
secrand.setSeed(seed.getBytes());
keygen.init(128, secrand);
SecretKey seckey = keygen.generateKey();
byte[] rawKey = seckey.getEncoded();
SecretKeySpec skeySpec = new SecretKeySpec(rawKey, "AES");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.DECRYPT_MODE, skeySpec);
byte[] decrypted = cipher.doFinal(crypt);
return decrypted;
}
暗号化の機能は、次の点を除いてまったく同じです。
cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
Android では次のようにこれらの関数を呼び出しています。
BufferedInputStream bis = new BufferedInputStream(photoStream);
byte[] mybytearray = new byte[photoStream.available()];
mybytearray = encrypted_Data(mybytearray);
そして、サーバー上で次のように:
byte[] mybytearray = new byte[10000000];
mybytearray_1 = decrypted_Data(mybytearray_1);
これらの暗号化関数を使用するのはこれが初めてですが、受け取ったときに何が間違っていますか:
javax.crypto.BadPaddingException: Given final block not properly padded