Mi scuso per aver risposto a una domanda molto vecchia, ma questo è venuto in una mia ricerca e la risposta selezionata non è corretta. Forse la risposta scelta parla alla vera domanda dell'OP, ma la domanda è circa RSACryptoServiceProvider
vs AESCryptoServiceProvider
, mentre la risposta è circa RjindaelManaged
contro AESCryptoServiceProvider
RjindaelManaged
è un'implementazione dell'algoritmo di Rjindael che è stato successivamente selezionato per diventare la base dello standard di crittografia AES da parte del NIST. AESCryptoServiceProvider
è la scelta migliore per implementare l'algoritmo AES / Rjindael. AES e Rjindael sono entrambi cifrari simmetrici.
RSA, il sistema di cifratura Rivest-Shamir-Adleman, è un codice completamente diverso asimmetrico . È completamente estraneo a AES / Rjindael.
La risposta corretta a quando utilizzare RSACryptoServiceProvider
rispetto a AESCryptoServiceProvider
dipende dall'uso di un codice simmetrico simmetrico asimmetrico.
In RSA, hai una coppia di chiavi pubblica e privata. Se vuoi avere una chiave pubblica da scambiare, o se vuoi che la tua chiave sia firmata da un'altra parte, vuoi RSA. Ma RSA è relativamente lento e fatto correttamente è a senso unico: la chiave pubblica viene crittografata, la chiave privata viene decrittografata.
Se hai un sacco di testo che vuoi criptare, vuoi AES. È molto più veloce e molti computer sono ottimizzati per questo. Ma c'è solo una chiave. Chiunque abbia la chiave può sia criptare che decrittografare, il che rende la condivisione della chiave in modo sicuro una priorità.
Per il meglio di entrambi i mondi, utilizza un pubblico RSA per crittografare e trasmettere una chiave AES e quindi comunicare usando AES.