使用Java加密会导致NoSuchAlgorithmException

时间:2009-06-17 23:18:23

标签: java cryptography

这是我的代码的加密部分。它编译得很好,但在运行时失败并带有异常:

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 个答案:

答案 0 :(得分:2)

如果你不想依赖像BouncyCastle这样的外部库,你可能不得不使用其他密码。

请参阅the documentation about Sun crypto providers,了解有关直接支持的内容的详细信息。