Introduction
This application can be used to encrypt a text message using AES encryption as well as send it to the person whose email is provided. This could be used as the security software for any of us. But to decrypt the encrypted text one must have the same application.
Background
Before starting, I would suggest to have a basic knowledge of C# and cryptography.
Modules
The code consists of two modules: AES encryption/decryption and Mail.
Using the code
The Namespaces
using System.Net;
Provides the classes and functions used in the program by the user for sending the mail.
using System.Security.Cryptography;
Provides the classes and functions related to the encryption.
The Code
To encrypt with the AES, .Net provides various classes. Here we use the AesCryptoServiceProvider class to encrypt and decrypt the given text.
AesCryptoServiceProvider aes = new AesCryptoServiceProvider();
byte[] key = aes.Key;
byte[] iv = aes.IV;
The key and iv (initialization vector) is used to encrypt the text.
Encryption
byte[] en;
ICryptoTransform ict = aes.CreateEncryptor(key, iv);// create the encryptor
MemoryStream ms = new MemoryStream();// To store the encrypted data into the stream(which is hold in memory) so as it could be used as per requirement.
CryptoStream cs = new CryptoStream(ms, ict, CryptoStreamMode.Write);//Is used to link the stream to cryptographic transformations.
StreamWriter sw = new StreamWriter(cs);//used to write the the data in the stream.
sw.Write(text);// write all text to the stream
sw.Close();// close the stream
en = ms.ToArray(); // store the contents
Decryption
ICryptoTransform ict = aes.CreateDecryptor(key, iv);// create the decryptor
MemoryStream ms = new MemoryStream(text);// created with the text it has to decrypt
CryptoStream cs = new CryptoStream(ms, ict, CryptoStreamMode.Read);//Is used in read mode
StreamReader sw = new StreamReader(cs);//used to read the data from the stream.
string str = sw.ReadToEnd(text);// write all text to the stream
sw.Close();// close the stream
Mail
Create an object of the mailmessage class as:
System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage();
Now prepare the message and the required details, as in:
message.To.Add("[email protected]");// the to field
message.From = new System.Net.Mail.MailAddress("[email protected]");// the from field
message.Subject = "Encrypted mail";
message.Body = "Encrypted text with key and iv";
Create the SMTP client object so as to send the mail as:
System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient();
Enter the required credentials needed for login:
smtp.Credentials = new NetworkCredential("your username", "your password");
Provide the SMTP host and port number (I used Gmail here):
smtp.Host = "smtp.gmail.com";
smtp.Port = 587;
Then use the Send() function to send the message, as in:
smtp.EnableSsl = true; // enable secure login (optional)
smtp.Send(message); // send the message
Now when the user receives the message he will see the encrypted message with key and iv.
*For full source and exe download the attachments.