我已将以下内容导入到我的项目中
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/