Использование криптографии Java приводит к NoSuchAlgorithmException

Вот часть шифрования моего кода. Он компилируется нормально, но завершается с этим исключением во время выполнения:

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);

Этот алгоритм не поставляется с Java 1.5? Я не против использовать другой алгоритм, я просто не знаю, что доступно. Я надеюсь, что мне не нужно использовать внешнюю библиотеку, такую ​​как bouncycastle, потому что я несколько дней пытался заставить ее работать безрезультатно (при включении ее в мое приложение.jar это вызывает ошибку "Неверный дайджест файла подписи"),

1 ответ

Решение

Похоже, вам, возможно, придется использовать какой-то другой шифр, если вы не хотите полагаться на какую-то внешнюю библиотеку, такую ​​как BouncyCastle.

Смотрите документацию о провайдерах криптографии Sun для более подробной информации о том, что поддерживается прямо из коробки.

Другие вопросы по тегам