Korzystanie z kryptografii Java prowadzi do wyjątku NoSuchAlgorithmException
Oto część szyfrowania mojego kodu. Kompiluje się dobrze, ale nie działa z tym wyjątkiem w czasie wykonywania:
import java.util.Random;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.PBEKeySpec;
import javax.crypto.spec.PBEParameterSpec;
...
byte[] salt = new byte[8];
Random rand = new Random();
rand.nextBytes(salt);
PBEKeySpec keySpec = new PBEKeySpec(password.toCharArray());
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("PBEWithSHAAndTwofish-CBC");
SecretKey key = keyFactory.generateSecret(keySpec);
PBEParameterSpec paramSpec = new PBEParameterSpec(salt, 1000);
Cipher cipher = Cipher.getInstance("PBEWithSHAAndTwofish-CBC");
cipher.init(Cipher.ENCRYPT_MODE, key, paramSpec);
byte[] ciphertext = cipher.doFinal(plaintext);
Czy ten algorytm nie pochodzi z Java 1.5? Nie mam nic przeciwko używaniu innego algorytmu, po prostu nie wiem, co jest dostępne. Mam nadzieję, że nie muszę korzystać z zewnętrznej biblioteki, takiej jak bouncycastle, ponieważ przez wiele dni starałem się, aby nie działała bezskutecznie (włączając ją do mojej aplikacji .jar, uruchamia błąd „Nieprawidłowy skrót pliku podpisu”) .