java - javax.crypto.Cipher 的问题

标签 java exception encryption

我已将以下内容导入到我的项目中

import java.security.*;
import javax.crypto.*;
import javax.crypto.spec.*;
import java.io.*;

以下内容告诉我“未处理的异常类型NoSuchPaddingException”

Cipher c = Cipher.getInstance("AES");

我正在使用 JaveSE-1.6。

有什么想法会导致这种情况吗?

最佳答案

Cipher.getInstance(...) 抛出两种异常,并要求您处理它们。

如果您希望在其他地方处理异常,则可以使用包含 Cipher c = Cipher.getInstance("AES"); 的方法重新抛出异常:

public void foo(){ 抛出异常 ... }

或者更好的是,将该方法包含在 try-catch block 中:

try{
   Cipher c = Cipher.getInstance("AES");
}
catch(Exception e){
   //do something about it
}

您还可以变得更有趣并执行以下操作:

try{
   Cipher c = Cipher.getInstance("AES");
}
catch(NoSuchAlgorithmException e){
   //handle the case of having no matching algorithm
}
catch(NoSuchPaddingException e){
   //handle the case of a padding problem
}

某些 Java 方法会引发异常,其中一些方法需要您处理它们。 Java API 文档中方法后面带有 Throws 的任何内容都需要处理。一般来说,他们让你这样做是有充分理由的。在这种情况下,如果您无法获得正确的密码,则无法加密任何内容。

关于java - javax.crypto.Cipher 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16613644/

相关文章:

android - 哪个是在 android 中使用的最佳加密方法?

java - 在 Java 中以类似方式处理多个异常的最佳实践

java - 从 PHP Web 服务解析 JSON 对象时出错

java - 合并正则表达式中的两个条件

java - spring抽象="true"是什么意思?

java - 如果可能的话,如何限制在控制台中打印通用异常消息?

java - 如何从标签名称更改的 xml 中获取 api 数据

Java - 如何调试任务<Void>?

python - 加密模块是 Fernet 安全的,我可以用该模块进行 AES 加密吗?

php - 与 PHP 的 mcrypt 兼容的 AES 的 Javascript 实现