USING System; USING System.Collections.Generic; USING System.ComponentModel; USING System.Data; USING System.Drawing; USING System.Linq; USING System.Text; USING System.Threading.Tasks; USING System.Windows.Forms; USING System.Security.Cryptography; namespace WindowsFormsApp1 { public partial class Form1 : Form { public string publicKeyString; public string privateKeyString; public string klucz_prywatny; public string encryptedText; public string szyfr; public string klucz_publiczny; public Form1() { InitializeComponent(); } private void btnPublic_key_Click(object sender, EventArgs e) { var cryptoServiceProvider = NEW RSACryptoServiceProvider(2048); //2048 - Długość klucza var publicKey = cryptoServiceProvider.ExportParameters(FALSE); //Generowanie klucza publiczny publicKeyString = GetKeyString(publicKey); tbPublic_Key.Text = publicKeyString; klucz_publiczny = publicKeyString; } private void btnPrivate_key_Click(object sender, EventArgs e) { var cryptoServiceProvider = NEW RSACryptoServiceProvider(2048); //2048 - Długość klucza var privateKey = cryptoServiceProvider.ExportParameters(TRUE); //Generowanie klucza prywatnego privateKeyString = GetKeyString(privateKey); lblPrivate_Key.Text = privateKeyString; klucz_prywatny = privateKeyString; } public static string GetKeyString(RSAParameters publicKey) { var stringWriter = NEW System.IO.StringWriter(); var xmlSerializer = NEW System.Xml.Serialization.XmlSerializer(typeof(RSAParameters)); xmlSerializer.Serialize(stringWriter, publicKey); RETURN stringWriter.ToString(); } private void btnEncryptiontext_Click(object sender, EventArgs e) { string tekst = textBox_text.Text; encryptedText = Encrypt(tekst, publicKeyString); //Szyfrowanie za pomocą klucza publicznego lbl_Encryptiontxt.Text = encryptedText; szyfr = encryptedText; IF (publicKeyString == NULL) { MessageBox.Show("Najpierw wygeneruj kklucz", "Error"); } } public static string Encrypt(string tekst, string publicKeyString) { var bytesToEncrypt = Encoding.UTF8.GetBytes(tekst); USING (var rsa = NEW RSACryptoServiceProvider(2048)) { try { IF (publicKeyString == NULL) { MessageBox.Show("Najpierw wygeneruj kklucz", "Error"); } ELSE { rsa.FromXmlString(publicKeyString.ToString()); } var encryptedData = rsa.Encrypt(bytesToEncrypt, TRUE); var base64Encrypted = CONVERT.ToBase64String(encryptedData); RETURN base64Encrypted; } finally { rsa.PersistKeyInCsp = FALSE; } } } private void btn_Decrypttxt_Click(object sender, EventArgs e) { string decryptedText = Decrypt(szyfr, klucz_prywatny); lbl_Decryptiontxt.Text = decryptedText; } public static string Decrypt(string szyfr, string klucz_prywatny) { var bytesToDescrypt = Encoding.UTF8.GetBytes(szyfr); USING (var rsa = NEW RSACryptoServiceProvider(2048)) { try { // server decrypting DATA WITH private KEY rsa.FromXmlString(klucz_prywatny); var resultBytes = CONVERT.FromBase64String(szyfr); var decryptedBytes = rsa.Decrypt(resultBytes, TRUE); var decryptedData = Encoding.UTF8.GetString(decryptedBytes); RETURN decryptedData.ToString(); } finally { rsa.PersistKeyInCsp = FALSE; } } } private void Form1_Load(object sender, EventArgs e) { } } }