无论我提供什么算法,SecretKeyFactory.getInstance都会给我NoSuchAlgorithmException

时间:2018-03-19 00:19:11

标签: java android android-studio cryptography

所以我一直在看这个页面:https://developer.android.com/reference/javax/crypto/SecretKeyFactory.html

他们似乎声称任何这些算法都应该与Android-Studio中的SecretKeyFactory一起使用,但是当我输入此代码时:

SecretKeyFactory key = SecretKeyFactory.getInstance("Algorithm-Name");

无论我放在那个Android网站上列出的算法名称,它总是给我

  

未处理的异常:java.security.NoSuchAlgorithmException

我在eclipse中使用标准的Java项目尝试过它并且运行正常。

我也试过使用spongycastle,但这似乎也没有用。

1 个答案:

答案 0 :(得分:0)

您的提供商配置似乎有问题。您可以尝试使用以下代码列出可用的算法:

Provider[] providers = Security.getProviders();
for (Provider provider : providers) {
    boolean printedProvider = false;
    Set<Service> services = provider.getServices();
    for (Service service : services) {
        String algorithm = service.getAlgorithm();
        String type = service.getType();
        if (type.equalsIgnoreCase("SecretKeyFactory")) {
            if (!printedProvider) {
                System.out.printf("%n === %s ===%n%n", provider.getName());
                printedProvider = true;
            }
            System.out.printf("Type: %s alg: %s%n", type, algorithm);
        }
    }
}

如果这不打印任何内容,则为同一运行时创建项目,然后再次运行。如果确实显示了算法 - 它应该 - 那么您应该确保打印的提供程序在项目配置中可用。

如果没有,您应该重新安装SDK或运行时,因为项目设置存在严重问题。