Java 不管我提供什么算法,SecretKeyFactory.getInstance都不会给我任何算法异常
所以我一直在看这一页: 他们似乎声称,这些算法中的任何一种都应该与Android Studio中的SecretKeyFactory配合使用,但当我输入以下代码时:Java 不管我提供什么算法,SecretKeyFactory.getInstance都不会给我任何算法异常,java,android,android-studio,cryptography,Java,Android,Android Studio,Cryptography,所以我一直在看这一页: 他们似乎声称,这些算法中的任何一种都应该与Android Studio中的SecretKeyFactory配合使用,但当我输入以下代码时: SecretKeyFactory key = SecretKeyFactory.getInstance("Algorithm-Name"); 无论我在android网站上列出了什么算法名称,它总是给我 未处理的异常:java.security.NoSuchAlgorithmException 我在eclipse中用一个标准Java项
SecretKeyFactory key = SecretKeyFactory.getInstance("Algorithm-Name");
无论我在android网站上列出了什么算法名称,它总是给我
未处理的异常:java.security.NoSuchAlgorithmException
我在eclipse中用一个标准Java项目进行了尝试,效果很好
我也试过使用spongycastle,但似乎也不起作用 您的提供商配置似乎有问题。您可以尝试使用以下代码列出可用的算法:
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或运行时,因为项目设置存在严重错误。Well SecretKeyFactory.getInstanceAlgorithm-Name永远不会工作,是吗?假设你得到一个具体的,并提供了一个正确的代码行是不工作的?你已经尝试了每一个算法在那里?你能给我们看一个特定的堆栈跟踪吗?您是否可能从运行时中更改或删除提供程序?您使用的是什么运行时/SDK?您可以尝试通过在运行时迭代所有的提供者和服务来列出算法……同时确保您使用的是正确的SecretKeyFactory类;一些提供程序模仿JCAAPI使用的类名结构,导致一些可怕的编码错误。