从GeneralSecurityException扩展的异常(包括NoSuchPaddingException和NoSuchAlgorithmException)是已检查的异常.已检查的异常是必须用Java处理的异常.您可以通过多种方式处理异常:
>在您的方法中添加throws子句;
>使用原始原因将其捕获并在其周围包装一个RuntimeException(基本上以无需处理的方式升级异常,通常会导致应用程序失败);
>抓住它,对它做一些有用的事情,然后继续前进.
通常,对于NoSuchAlgorithmException和NoSuchPaddingException,您可以将异常升级到RuntimeException,例如IllegalStateException.通常,您的算法字符串保持静态,并且需要Java运行时环境支持“ AES / CBC / PKCS5Padding”,因此,仅在出现严重错误时才发生此异常.
如果不想单独处理这些异常,则可以捕获GeneralSecurityException或使用multi catch子句.解密方法期间的BadPaddingException和IllegalBlockSizeException指示输入失败,因此应分开处理(并注意填充oracle攻击).
请注意,Jython作为另一种语言,不使用检查的异常,因此异常会完全掉落并导致程序失败.
例:
try {
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
} catch(GeneralSecurityException e) {
throw new IllegalStateException("Could not retrieve AES cipher", e);
}