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”) .

questionAnswers(1)

yourAnswerToTheQuestion