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.