2016-04-08 6 views
-1

Zuerst sind, lief ich dieses:Warum NoSuchAlgorithmException erhalten, wenn Provider verfügbar

public static void main(String[] args) 
    { 
    for (Provider provider: Security.getProviders()) { 
     System.out.println(provider.getName()); 
     for (String key: provider.stringPropertyNames()) 
     System.out.println("\t" + key + "\t" + provider.getProperty(key)); 
    } 
    } 

Got:

Cipher.AES SupportedModes ECB|CBC|PCBC|CTR|CTS|CFB|OFB|CFB8|CFB16|CFB24|CFB32|CFB40|CFB48|CFB56|CFB64|OFB8|OFB16|OFB24|OFB32|OFB40|OFB48|OFB56|OFB64|CFB72|CFB80|CFB88|CFB96|CFB104|CFB112|CFB120|CFB128|OFB72|OFB80|OFB88|OFB96|OFB104|OFB112|OFB120|OFB128 
    Cipher.AES_128/OFB/NoPadding com.sun.crypto.provider.AESCipher$AES128_OFB_NoPadding 
    Cipher.AESWrap SupportedModes ECB 
    Cipher.AES SupportedKeyFormats RAW 
    Cipher.AES com.sun.crypto.provider.AESCipher$General 
    Provider.id info SunJCE Provider (implements RSA, DES, Triple DES, AES, Blowfish, ARCFOUR, RC2, PBE, Diffie-Hellman, HMAC) 
    Cipher.AES SupportedPaddings NOPADDING|PKCS5PADDING|ISO10126PADDING 

Aber wenn ich zu getInstance() von Cipher "AES/EZB/PKCS5PADDING" versuchen, sie springen Ausnahme:

test.java:43: error: unreported exception NoSuchAlgorithmException; must be caught or declared to be thrown 
     Cipher cip = Cipher.getInstance("AES/ECB/PKCS5PADDING"); 
+1

Mögliche Duplikate von [Warum erhalte ich "Ausnahme; muss abgefangen oder deklariert werden", wenn ich versuche, meinen Java-Code zu kompilieren?] (Http://stackoverflow.com/questions/908672/why-do- i-get-exception-muss-gefangen-oder-deklariert-geworfen-werden-wenn-ich-versuche-zu) – Savior

+0

Nein. Sie sagen das Unterschied Ding. Ich meine, dass javax.crypto Unterstützung für AES-Algorithmus/ECB-Modus/PKCS5PADDING, aber warum eine Ausnahme aufgetreten ist? –

+1

Der Compiler verursacht einen Fehler, eine Ausnahme wird nicht ausgelöst. –

Antwort