Следующий код прекрасно работает в JDK 7 от Oracle в Windows, но не работает со следующей ошибкой в Linux: javax.crypto.IllegalBlockSizeException: Input length must be multiple of 8 when decrypting with padded cipher
в строке Cipher.doFinal(ciphertextArray)
Это использует тот же самый файл Jar с таже командной строки и т.д. значения для текста и пароля поступают из командной строки, хотя и я подозреваю, что проблема находится где-то здесь, я просто понятия не имею, где ...Код работает на Windows JDK 7, но не на Linux JDK 7
String saltD = text.substring(0,12);
String ciphertext = text.substring(12,text.length());
// BASE64Decode the bytes for the salt and the ciphertext
Base64 decoder = new Base64();
byte[] saltArray = decoder.decode(saltD);
byte[] ciphertextArray = decoder.decode(ciphertext);
// Create the PBEKeySpec with the given password
PBEKeySpec keySpec = new PBEKeySpec(password.trim().toCharArray());
// Get a SecretKeyFactory for PBEWithSHAAndTwofish
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(encryptionMethod);
// Create our key
SecretKey key = keyFactory.generateSecret(keySpec);
// Now create a parameter spec for our salt and iterations
PBEParameterSpec paramSpec = new PBEParameterSpec(saltArray, ITERATIONS);
// Create a cipher and initialize it for encrypting
Cipher cipher = Cipher.getInstance(encryptionMethod);
cipher.init(Cipher.DECRYPT_MODE, key, paramSpec);
// Perform the actual decryption
byte[] plaintextArray = cipher.doFinal(ciphertextArray);
return new String(plaintextArray);
Чтобы убедиться, что это не ошибка, я бы запускал ее с последней версией каждого. Я подозреваю, что 1.7.0_09-icedtea слишком стар. –
так, почему бы не использовать тот, который работает;) – Abraham
Итак, я просто установил один и тот же JDK на другой тестовой машине, и он решил это. Поэтому я задал вопрос. Но теперь я помню, как что-то читал где-то о необходимости что-то делать с аргументами командной строки, потому что между Windows и Linux существует тонкая разница. Я просто не могу вспомнить, что, когда, где и как :( –