Perché Java MessageDigest.getInstance () ha una stringa come parametro?

2

Suppongo che sia così che possa essere esteso con algoritmi personalizzati, ma non sarebbe più conveniente applicare, diciamo, il pattern del metodo factory qui ed evitare l'intera NoSuchAlgorithmException thing?

Qualcosa come:

MessageDigest.getMD5Algorithm();

o

MessageDigest.getInstance(DigestAlgorithmFactory.getMD5Algorithm())

Immagino che qui ci sia un'immagine più grande, ma non riesco a vederlo.

    
posta mkvcvc 04.01.2013 - 13:04
fonte

1 risposta

5

MethodDigest.getInstance(String algorithm) è un metodo factory.

È richiesto l'algoritmo param. Un digest è un concetto astratto, non esiste un concreto digest di default ma ci sono molte diverse implementazioni di digest.

I presume it's that way so it could be extended with custom algorithms

Sì, questi sono fatti scrivendo e registrando i fornitori di sicurezza, come Bouncy Castle. Nota che MessageDigest non sa nulla delle implementazioni, guarda semplicemente quali sono i provider di sicurezza disponibili per vedere se uno di essi supporta l'algoritmo fornito. È possibile che nessun provider supporti l'algoritmo, quindi perché genera NoSuchAlgorithmException .

    
risposta data 04.01.2013 - 13:09
fonte

Leggi altre domande sui tag