Implementieren von RSA in C #

Ich versuche derzeit, eine Klasse für die sichere Kommunikation zwischen Instanzen meiner App mithilfe der RSACrytoServiceProveider-Klasse zu implementieren. Erste Frage: Ist es eine gute Idee, eine einzelne Klasse zu implementieren, um Absender / Empfänger - Rollen zu verwalten, oder sollte ich die Rollen in einzelne Klassen aufteilen? Das habe ich bisher gemacht:

using System;
using System.Text;
using System.Security.Cryptography;

namespace Agnus.Cipher
{
    public class RSA
    {
        private byte[] plaintextBytes;
        private byte[] ciphertextBytes;
        private RSACryptoServiceProvider rSAProviderThis;
        private RSACryptoServiceProvider rSAProviderOther;

        public string PublicKey
        {
            get { return rSAProviderThis.ToXmlString(false); }
        }

        public RSA()
        {
            rSAProviderThis = new RSACryptoServiceProvider { PersistKeyInCsp = true }; 
            plaintextBytes = Encoding.Unicode.GetBytes(PublicKey);
        }

        public void InitializeRSAProviderOther(string parameters)
        {
            rSAProviderOther.FromXmlString(parameters);
        }

        public byte[] Encrypt()
        {
            return rSAProviderThis.Encrypt(plaintextBytes, true);
        }
        public byte[] Decrypt()
        {
            return rSAProviderThis.Decrypt(ciphertextBytes, true);
        }
        public byte[] Sign()
        {
            using (SHA1Managed SHA1 = new SHA1Managed())
            {
                byte[] hash = SHA1.ComputeHash(ciphertextBytes);
                byte[] signature = rSAProviderThis.SignHash(hash, CryptoConfig.MapNameToOID("SHA1"));
                return signature;
            }
        }
        public void Verify()
        {
            throw new NotImplementedException();
        }

    }
}

Zweite Frage: Wie sende und empfange ich Daten, die in die Klasse eingespeist werden sollen? Ich bin ein grünes Horn in diesem Bereich, würde Zeiger geschätzt.

Antworten auf die Frage(10)

Ihre Antwort auf die Frage