Giusto per chiarire le cose un po ':
RSA può essere utilizzato sia per la crittografia (garantendo che Eva non può leggere i messaggi che Alice invia a Bob) oppure per la firma (assicurare che se Alice invia un messaggio a Bob, Bob sa che in realtà è stata Alice a inviare il messaggio, e non Eve che finge di essere Alice)
RSA genera una coppia di chiavi: una chiave pubblica e una chiave privata. RSA è progettato in modo tale che se si applica la chiave pubblica e quindi si applica la chiave privata, o viceversa, si otterrà lo stesso messaggio. E la chiave pubblica non può essere derivata dalla chiave privata (o viceversa).
Per utilizzare RSA per la crittografia, Alice crittografa il messaggio utilizzando la chiave pubblica di Bob. L'unico modo per leggere questo messaggio è con la chiave privata di Bob, che solo lui ha. Così Eva non può leggere il messaggio perché non ha questa chiave. D'altra parte, questo non fornisce l'autenticazione della fonte del messaggio. Eve può anche ottenere la chiave pubblica di Bob (dato che è pubblica) e inviare messaggi a Bob, fingendo di essere Alice.
Per utilizzare RSA per la firma, Alice accetta un hash del messaggio, crittografa l'hash utilizzando la propria chiave privata e aggiunge il risultato (questa è la firma) al messaggio. Ovviamente, Eve può ancora decifrarlo usando la chiave pubblica di Alice. Tuttavia, Bob può decodificare la firma utilizzando la chiave pubblica di Alice e vedere se corrisponde.Se lo fa, deve essere stato crittografato usando la chiave privata di Alice, che solo lei ha, quindi deve provenire da Alice.
Ora, io non sono a conoscenza l'API .NET crittografia, quindi non sono sicuro se funziona esattamente come descritto qui. Ma questa spiegazione potrebbe aiutarti a capire alcune delle risposte che stai ottenendo.
* "Encrypt with the private key" * non è un'operazione di crittografia valida. Se si sta tentando di eseguire tale operazione, in genere si desidera un *** Signature Scheme with Recovery ***. – jww