2010-06-18 70 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()); 
}