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 encryptedText; public STRING decryptedText; 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); lblPublic_Key.Text = 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 STRING privateKeyString = GetKeyString(privateKey); lblPrivate_Key.Text = 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; STRING encryptedText = Encrypt(tekst, publicKeyString); //Szyfrowanie za pomocą klucza publicznego lbl_Encryptiontxt.Text = 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(encryptedText, privateKeyString); lbl_Decryptiontxt.Text = decryptedText; } public STATIC STRING Decrypt(STRING encryptedText, STRING privateKeyString) { var bytesToDescrypt = Encoding.UTF8.GetBytes(encryptedText); USING (var rsa = new RSACryptoServiceProvider(2048)) { try { // server decrypting DATA with private KEY rsa.FromXmlString(privateKeyString); var resultBytes = Convert.FromBase64String(encryptedText); var decryptedBytes = rsa.Decrypt(resultBytes, true); var decryptedData = Encoding.UTF8.GetString(decryptedBytes); RETURN decryptedData.ToString(); } finally { rsa.PersistKeyInCsp = false; } } } } }