【问题标题】:How can I get Eclipse to recognize an encryption algorithm in an Android project如何让 Eclipse 识别 Android 项目中的加密算法
【发布时间】:2012-10-24 20:48:27
【问题描述】:

我正在 Eclipse 中开发一个使用加密的 Android 项目。代码包含以下行:

Cipher en = Cipher.getInstance("AES/ECB/NOPADDING");

Eclipse 抱怨这行代码: “未处理的异常类型 NoSuchAlgorithmException”和“未处理的异常类型 NoSuchPaddingException”。

我用包含那行代码的 Eclipse 外部的文本编辑器编写了一个简单的加密/解密 java 程序。程序从命令行正确编译运行,没有抛出异常,加解密正确。

这告诉我在支持该算法和填充的机器上正确安装了一个提供程序,但由于某种原因 Eclipse 没有看到或找不到一些必要的文件。我试过浏览各种目录并多次更改 Eclipse 的搜索路径,但都没有成功。有什么想法吗?

【问题讨论】:

    标签: android eclipse encryption


    【解决方案1】:

    如果您查看documentation for 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 块。

    Exception Basics

    【讨论】:

    • 问题不在于处理异常,这就是代码首先抛出异常的原因。我需要获取密码实例来进行加密。
    • 那么,对于 Eclipse,您是尝试获取密码,然后抛出异常,还是根本不运行?
    • 它告诉我在 Eclipse 编辑器中添加该行后,它将在运行时抛出这些异常。我无法运行它,因为如果我取消注释该行,它将无法编译并出现错误。
    • 您必须像上面的代码示例那样用 try/catch 块包围代码,因为代码有可能引发异常。这并不是说它肯定会,但如果确实如此,你需要有代码来检查它。在 Java 中,如果一个方法抛出一个异常,那么你绝对需要有代码来处理它(除非它是 RuntimeException 的子类,例如 NullPointerException),无论该异常是否实际发生在运行时。请参阅我添加到答案底部的链接。
    • 好的!我会抓住异常!但是除非我能阻止它首先抛出异常,否则整个程序都是无用的。感谢您的帮助。其他人有什么想法吗?
    猜你喜欢
    • 1970-01-01
    • 2011-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-15
    • 2012-05-15
    • 1970-01-01
    • 2012-02-22
    相关资源
    最近更新 更多