所以我一直在看这个页面: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,但这似乎也没有用。
答案 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或运行时,因为项目设置存在严重问题。