Thursday, December 4, 2025

RSA Encryption and Decryption using Private and Public Key, client and server side

RSA Encryption and Decryption using Private and Public Key, client and server side

Here i used two approach 

1. Server Side Encryption (using Public Key) and Server Side Decryption (using Private Key)


using System;
using System.Security.Cryptography;
using System.Text;

public partial class RSA_RSAEncDec : System.Web.UI.Page
{
    string publicKey = "";
    string privateKey = "";


    /*
     * Very Use full Site to develop this functionality
    //https://raskeyconverter.azurewebsites.net/XmlToPem?handler=ConvertPEM
    // For Encryption we user Private key PEM like below sample public key format i.e.  
    -----BEGIN PUBLIC KEY-----
    MIIBIjANBgkqhki....
-----END PUBLIC KEY-----

    For Decryption we required XMl file hence generate using the PEM and result like this..
    xpuS70fWBZv.....AQAB

+m+08g5NTiFXrh5f0...

ywUa2jNho8BFlQobo.....59OegfABWdD9tH4Dn7....B1t1AKlSBYQnQ....v4iZ7IpuX4yc....YC5TWCHX2duUR0a.....
*/ protected void Page_Load(object sender, EventArgs e) { string PreFix = @"C:\Users\murdhusi\Downloads\Biometric (2)\Biometric\Murli\"; publicKey = System.IO.File.ReadAllText(PreFix + @"RSApublicKeyM.txt"); privateKey = System.IO.File.ReadAllText(PreFix + @"RSAprivateKeyM.txt"); } protected void btnEncrypt_Click(object sender, EventArgs e) { txtencrypt.Text = GenerateKeyAndEncrypt(); } protected void btnDecrypt_Click(object sender, EventArgs e) { txtdecrypt.Text = GetKeyandDecrypt(Convert.FromBase64String(txtencrypt.Text)); } #region For Encryption private string GenerateKeyAndEncrypt() { // Generate RSA key pair using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider()) { // Convert the data to bytes string data = txtplain.Text;// "Hello, RSA! MURLi"; //lblMessage.Text += ("
Orignal data: " + data); byte[] dataBytes = Encoding.UTF8.GetBytes(data); // Encrypt the data using the public key byte[] encryptedData = EncryptData(dataBytes, publicKey); string encData = Convert.ToBase64String(encryptedData); // Store or transmit the encrypted data //lblMessage.Text += ("
Encrypted data: " + encData); return encData; } } static byte[] EncryptData(byte[] dataBytes, string publicKey) { //if (true) { using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider()) { // Import the recipient's public key rsa.FromXmlString(publicKey); // Encrypt the data using the public key byte[] encryptedData = rsa.Encrypt(dataBytes, true); return encryptedData; } } } #endregion #region For Decryption private string GetKeyandDecrypt(byte[] encData) { string originalData = ""; string privateKeyXml = ""; // Retrieve the encrypted data byte[] encryptedData = null; // Get the encrypted data privateKeyXml = privateKey; encryptedData = encData; // Create an instance of RSACryptoServiceProvider using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider()) { // Import the private key rsa.FromXmlString(privateKeyXml); // Decrypt the data using the private key byte[] decryptedData = rsa.Decrypt(encryptedData, true); // Convert the decrypted data back to its original form originalData = Encoding.UTF8.GetString(decryptedData); // Display the decrypted data //lblMessage.Text += ("
Decrypted data: " + originalData); } return originalData; } #endregion }

2. Client Side Encryption (using Public Key) and Server Side Decryption (using Private Key)

<script src="https://cdn.jsdelivr.net/npm/jsencrypt@latest/bin/jsencrypt.min.js"></script>

    <script src="js/jsencrypt.min.js"></script>


<!--Your custom script that uses JSEncrypt-->

<script type="text/javascript">

    // Define the encryption function with a single parameter (the data to be encrypted).

    function encrypt(data) {

        //debugger;

        var encrypt = new JSEncrypt(); // Create a new instance of the JSEncrypt library.


        public_key = `-----BEGIN PUBLIC KEY-----

MIIBIjANBgkqhkiG9w.....

-----END PUBLIC KEY-----`;

        

        encrypt.setPublicKey(public_key); // Set the public key for the encryption library.

        var encrypted = encrypt.encrypt(data); // Use the encrypt method of the library to encrypt the data.


        //console.log("encrypted Text: ", encrypted);

        return encrypted; // Return the encrypted data.

    }


let encData = encrypt("Text for encryption");

</script>


Download Sample Code from here