Created
April 10, 2020 17:45
-
-
Save luisdeol/26253bae2625bce84aca04a631c6add0 to your computer and use it in GitHub Desktop.
3.2. Encrypt in the .NET Framework (Asymmetric Encryption)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.Security.Cryptography; | |
using System.Text; | |
namespace _32_Symmetric_Asymmetric_Encryption | |
{ | |
class Program | |
{ | |
static void Main(string[] args) | |
{ | |
const string messageFromLuisToFelipe = "Hi, Felipe."; | |
var messageBytes = Encoding.ASCII.GetBytes(messageFromLuisToFelipe); | |
// Generating Felipe's public and private key | |
using (var rsaCryptoServiceProviderWriter = new RSACryptoServiceProvider()) | |
{ | |
// Exporting public and private parameters | |
var publicParameters = rsaCryptoServiceProviderWriter.ExportParameters(false); | |
var privateParameters = rsaCryptoServiceProviderWriter.ExportParameters(true); | |
// Luis uses Felipe's public key to encrypt the message. | |
var encryptedData = EncryptMessage(messageBytes, publicParameters); | |
// Felipe uses its own private key to decrypt the message | |
var decryptedData = DecryptMessage(encryptedData, privateParameters); | |
Console.WriteLine($"Message from Luis decrypted using Felipe's private key: {Encoding.UTF8.GetString(decryptedData)}"); | |
} | |
Console.ReadLine(); | |
} | |
private static byte[] EncryptMessage(byte[] messageBytes, RSAParameters rsaParameters) | |
{ | |
byte[] encryptedData; | |
using (var rsaCryptoServiceProviderWriter = new RSACryptoServiceProvider()) | |
{ | |
rsaCryptoServiceProviderWriter.ImportParameters(rsaParameters); | |
encryptedData = rsaCryptoServiceProviderWriter.Encrypt(messageBytes, false); | |
} | |
return encryptedData; | |
} | |
private static byte[] DecryptMessage(byte[] encryptedMessageBytes, RSAParameters rsaParameters) | |
{ | |
byte[] decryptedMessage; | |
using (var rsaCryptoServiceProviderReader = new RSACryptoServiceProvider()) | |
{ | |
rsaCryptoServiceProviderReader.ImportParameters(rsaParameters); | |
decryptedMessage = rsaCryptoServiceProviderReader.Decrypt(encryptedMessageBytes, false); | |
} | |
return decryptedMessage; | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment