2010-06-18 45 views
2

我使用Java 1.4.2_10,我试图使用RSA加密:密码学 - RSA算法是在Java 1.4

我正在为抛出:NoSuchAlgorithmException下面的代码:

cipher = Cipher.getInstance("RSA"); 

这是错误:

java.security.NoSuchAlgorithmException: Cannot find any provider supporting RSA 
     at javax.crypto.Cipher.getInstance(DashoA6275) 

这工作正常1.5和以上,但我需要使用1.4。是否有任何解决方法或第三方产品可用于解决此问题?

在此先感谢。

回答

2

您可以安装Bouncy Castle加密提供程序。只需抓住他们的罐子,然后拨打电话Cipher.getInstance("RSA", "BC")

+2

并告诉'java.security.Security'以某种方式使用提供程序。 Bouncy Castle的文档并不总是很容易找到,所以这里有一种方法:'Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());'(也许有其他方法?) – 2010-06-18 22:55:30

+0

感谢你为你解答!但现在我得到这个错误: “java.lang.SecurityException异常:卑诗省提供者可能不被信任的一方签署 \t在javax.crypto.SunJCE_b.a(DashoA12275)” 我下载了“bcprov -jdk14-145.jar“从官方网站,它假设是签署。我错过了什么吗?再次感谢! – Crysfel 2010-06-19 00:23:36

2

Java 1.4肯定支持RSA,所以事实上这不起作用表明更深层的东西是错误的。这是否与其他密码(如“AES”或“DES”)一起使用?您应该检查以确保您的提供者已正确配置。以下代码在系统上的输出是什么:

System.out.println("Providers: "); 
java.security.Provider[] providers = java.security.Security.getProviders(); 
for(int x = 0; x < providers.length; x++) { 
    System.out.println("\t" + providers[x]); 
} 

System.out.println(); 
System.out.println("Algorithms: "); 
java.util.Set algs = java.security.Security.getAlgorithms("Cipher"); 

java.util.Iterator i_algs = algs.iterator(); 
while(i_algs.hasNext()) { 
    System.out.println("\t" + i_algs.next()); 
}