如何让Eclipse识别Android项目中的加密算法

3
我正在Eclipse上开发一个使用加密的Android项目。代码包含以下行:
Cipher en = Cipher.getInstance("AES/ECB/NOPADDING");
Eclipse 报告这行代码出现了 "Unhandled exception type NoSuchAlgorithmException" 和 "Unhandled exception type NoSuchPaddingException" 错误。
我在Eclipse以外的文本编辑器中编写了一个简单的加密/解密Java程序,其中包含该行代码。程序在命令行下正确地编译和运行,没有抛出任何异常,并且可以正确地进行加密和解密操作。
这告诉我,在计算机上安装了支持该算法和填充的提供程序,但由于某种原因,Eclipse无法找到必要文件。我已经尝试查看各种目录并多次更改过Eclipse的搜索路径,但没有成功。 有什么建议吗?
1个回答

3
如果您查看Cipher.getInstance的文档,您会注意到它会抛出您提到的异常。请使用try/catch块来包围您的引用(如果您将鼠标悬停在突出显示的错误上,eclipse应该会提供此解决方案)。
示例:
try {
    Cipher en = Cipher.getInstance("AES/ECB/NOPADDING");
    //use the cipher
    //...
} catch (NoSuchAlgorithmException e) {
    //handle exception
    // ex: e.printStackTrace(); System.exit(1);
} catch (NoSuchPaddingException e) {
    //handle exception
} finally {
    //optional, use this block if necessary
}

Java要求你处理已检查异常,因此你应该确保在代码中正确使用try/catch块。

异常基础知识


问题不在于处理异常,而是为什么代码首先会抛出异常。我需要获取一个密码器实例来进行加密。 - user1772393
那么,使用Eclipse时,您是尝试获取密码,然后它抛出异常,还是根本无法运行? - mahercbeaucoup
如果我在Eclipse编辑器中添加该行,它会告诉我在运行时抛出这些异常。如果我取消注释该行,由于错误而无法编译,因此我无法运行它。 - user1772393
1
你必须像我上面的代码示例一样,用try/catch块包围代码,因为代码有可能会抛出异常。这并不是说它一定会抛出异常,但如果确实发生了异常,你需要有代码来检查它。在Java中,如果一个方法抛出异常,那么你绝对需要有代码来处理它(除非它是RuntimeException的子类,例如NullPointerException),无论该异常是否在运行时发生。请参见我添加到答案底部的链接。 - mahercbeaucoup
@user1772393 只有在您提供的输入不正确时,它才会实际抛出异常...但是Java要求您必须有一个备选计划,以防万一它无法完成您想要的操作。 - FoamyGuy
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接