【问题标题】:Using Java crypto leads to NoSuchAlgorithmException使用 Java 加密会导致 NoSuchAlgorithmException
【发布时间】:2009-07-15 14:31:40
【问题描述】:

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

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 应用程序中,它会触发“无效的签名文件摘要”错误) .

【问题讨论】:

    标签: java cryptography


    【解决方案1】:

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

    请参阅the documentation about Sun crypto providers,了解有关开箱即用支持的更多详细信息。

    【讨论】:

    • 祝福你!这正是我所需要的。很遗憾,我可能需要使用像 DES 这样的过时算法,但它似乎运行良好,因此对于我的目的来说已经足够了,非常感谢。
    • AES 相当不错,除了 NSA 放在那里的后门。 :blackhelicopters:
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-07
    • 1970-01-01
    • 2021-04-10
    • 1970-01-01
    • 2021-05-07
    • 1970-01-01
    相关资源
    最近更新 更多