Java 如何验证我自己的提供商(仅用于测试目的)

Java 如何验证我自己的提供商(仅用于测试目的),java,jce,Java,Jce,现在,我编写了一个新的提供程序(ESMJCE提供程序),我还编写了一个简单的应用程序来测试它,但我也有一些类似的例外 java.lang.SecurityException: JCE cannot authenticate the provider ESMJCE at javax.crypto.Cipher.getInstance(DashoA13*..) at javax.crypto.Cipher.getInstance(DashoA13*..) at testprovider.main(t

现在,我编写了一个新的提供程序(ESMJCE提供程序),我还编写了一个简单的应用程序来测试它,但我也有一些类似的例外

java.lang.SecurityException: JCE cannot authenticate the provider ESMJCE
at javax.crypto.Cipher.getInstance(DashoA13*..)
at javax.crypto.Cipher.getInstance(DashoA13*..)
at testprovider.main(testprovider.java:27)
Caused by: java.util.jar.JarException: Cannot parse file:/C:/Program%20Files/Java/jre1.6.0_02/lib/ext/abc.jar
at javax.crypto.SunJCE_c.a(DashoA13*..)
at javax.crypto.SunJCE_b.b(DashoA13*..)
at javax.crypto.SunJCE_b.a(DashoA13*..)
... 3 more
这是我的源代码

import java.security.Provider;
import java.security.Security;
import javax.crypto.Cipher;
import esm.jce.provider.ESMProvider;

public class testprovider {

/
@param args
/
public static void main(String[] args) {
  // TODO Auto-generated method stub
  ESMProvider esmprovider = new esm.jce.provider.ESMProvider();

  Security.insertProviderAt(esmprovider,2);

  Provider[] temp = Security.getProviders();
  for (int i= 0; i<temp.length; i++){
    System.out.println("Providers: " temp[i].getName());
  }
  try{
    Cipher cipher = Cipher.getInstance("DES", "ESMJCE");
    System.out.println("Cipher: " cipher);
    int blockSize= cipher.getBlockSize();
    System.out.println("blockSize= " + blockSize);
  }catch (Exception e){
    e.printStackTrace();
  } 
}
}
导入java.security.Provider;
导入java.security.security;
导入javax.crypto.Cipher;
导入esm.jce.provider.ESMProvider;
公共类测试提供者{
/
@参数args
/
公共静态void main(字符串[]args){
//TODO自动生成的方法存根
ESMProvider ESMProvider=new esm.jce.provider.ESMProvider();
Security.insertProviderAt(esmprovider,2);
Provider[]temp=Security.getProviders();

对于(int i=0;i否),除非您编写自己的JVM,否则您无法对其进行身份验证。否则,请请求JVM提供程序(Oracle)对您的JAR进行签名。

实际上,您可以绕过基于Sun的证书要求,自己对提供程序进行签名:。当然,请在此之前查看:

a)“提供程序[]的输出是什么temp=Security.getProviders();“b)ext文件夹中的abc.jar是什么?它输出所有JCE提供程序和我的提供程序