Domanda

Entrambe le linee di codice:

KeyPairGenerator.getInstance("RSA")
KeyPairGenerator.getInstance("RSA", "BC")

funziona bene. Allora, qual è il differecente utilizzando BC o no?

Is aC completamente compatibile con la RSA di default usata? (Utilizzando Sun JDK 6)

È stato utile?

Soluzione

BouncyCastle FAQ ci sono alcune voci relative a RSA dettagli di implementazione.

Io personalmente non ho trovato nulla di scritto sui provider di Sun e BC incompatibile, e io suggerisco di usare implementazione RSA nativa di Java se BouncyCastle dipendenza potrebbe essere completamente abbandonato da questo. Si dovrebbe aggiungere dipendenze esterne solo se v'è un vantaggio ben definito da questo.

Se si utilizza biblioteca aC da qualche altra parte nel progetto, credo che non importa il provider da utilizzare.

Modifica

J2ME non include implementazione RSA. Quindi, se avete intenzione di porto la vostra applicazione per J2ME volte, biblioteca BouncyCastle è il modo giusto per andare.

Altri suggerimenti

Da Javadoc del primo costruttore :

  

Restituisce un oggetto che KeyPairGenerator   genera / coppie di chiavi private pubbliche per   l'algoritmo specificato.

     

Questo metodo attraversa l'elenco dei   Provider di sicurezza registrati,   iniziando con il più preferito   Provider. Un nuovo KeyPairGenerator   incapsulando l'oggetto   implementazione KeyPairGeneratorSpi    dal primo provider che supporti   l'algoritmo specificato viene restituito .

     

Si noti che l'elenco dei membri registrati   provider possono essere recuperati tramite il    Security.getProviders() metodo.

Il Javadoc concatenata di Security.getProviders() a sua volta dichiara quanto segue:

  

Restituisce un array contenente tutti i provider installati. L'ordine dei provider nella matrice è la loro ordine di preferenza.

Bene, a quanto pare BC è nel tuo caso "per caso" il primo fornitore preferito. Se v'è incertezza intorno ad esso (vale a dire che si desidera distribuire l'applicazione e si ha alcun controllo su ambiente di utente finale) e si vorrebbe lasciarlo bastone da usare aC, allora si dovrebbe preferisce usare il secondo costruttore.

"BC" restituisce l'attuazione BouncyCastle dell'algoritmo di crittografia.

Se non si specifica il provider restituirà l'attuazione "più prefferred" della crypto algoritmo vale a dire la providor in posizione 1 è la più avremmo gradito nella matrice dei fornitori.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top