Wednesday, 16 May 2012

RSA Encryption Decryption Program




Network Information Securrity
RSA (Encryption -Decryption) Program on C-sharp


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace NIS_SAF
{
    public partial class Form1 : Form
    {
     
     
         public Form1()
        {
            InitializeComponent();
       
        }
     

        private void btn_res_Click(object sender, EventArgs e)
        {
            int n = Convert.ToInt32(txt_n.Text)-1;

            for (int q = 1; q <= n/2; q += 2)
            {
                for (int k = 1; k <=(n / 2); k++)
                {
                    if (n == Math.Pow(2, k) * q)
                    {
                        lbl_res.Text = "K=" + k.ToString() + ", Q=" + q.ToString();
                        break;
                    }
                }
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            int num = Convert.ToInt32(txt_prme.Text);
            if (check_prime(num))
                prime(num);
            else
                nonprime(num);
         
        }

        private void nonprime(int num)
        {
            int rem = 0;
            for (int i = 2; i <= num / 2; i++)
            {
                if (num % i == 0)
                {
                    rem = num / i;
                    if (check_prime(i) == true && check_prime(rem) == true)
                    {
                        label6.Text = i.ToString() + "," + rem.ToString();
                        label6.Text +="\n There are "+ ((i - 1) * (rem - 1)).ToString()+" co-prime number of "+num;
                        co_prime(num,i,rem);
                    }
                }
            }
        }

        private void co_prime(int num,int div,int rem)
        {
            label6.Text += "\n";
            for (int i = 1; i < num; i++)
            {
                if (i % div == 0 || i % rem == 0)
                { }
                else
                {
                    label6.Text +=   i.ToString()+",";
                }

            }
            label6.Text += "Are Co prime of " + num.ToString();
        }

        private void co_primes(int num, int div, int rem)
        {
           lbl_show.Text += "\n";
            for (int i = 1; i < num; i++)
            {
                if (i % div == 0 || i % rem == 0)
                { }
                else
                {
                   // lbl_show.Text += i.ToString() + ",";
                }

            }
       //     lbl_show.Text += "Are Co prime of " + num.ToString();
        }

        private bool check_prime(int i)
        {
            for (int j = 2; j <= i / 2; j++)
            {
                if (i % j == 0)
                    return false;
            }
            return true;
        }

        private void prime(int num)
        {
          label6.Text="There are "+(num-1)+" co-prime in "+num+"\n";
          for (int i = 1; i <=num-1; i++)
          {
           
                  label6.Text += i.ToString() + ",";
         

          }

        }

        private void btn_rsa_Encrypt_Click(object sender, EventArgs e)
        {
            int mod = Convert.ToInt32(txt_p.Text) * Convert.ToInt32(txt_q.Text);
            int Qn = (Convert.ToInt32(txt_p.Text) -1)*( Convert.ToInt32(txt_q.Text)-1);
            lbl_show.Text="CO PRIME OF "+mod+" ARE "+Qn;
            co_primes(mod, Convert.ToInt32(txt_p.Text), Convert.ToInt32(txt_q.Text));
            int res=Rsa_EN(Convert.ToInt32(txt_m.Text), 7, mod);
            lbl_show.Text += "Encrypt Messege is " + res;
            lbl_show.Text += "\n" + Rsa_dec(mod, Qn, 7, res);
           


        }

        int Rsa_EN(int m, int e, int mod)
        {
            int mul = 1;
            int add = 1;
            int pow = 1;
            for (int i = 0; i < 1; i++)
            {
                mul *= (int)(Math.Pow(m, pow) % mod);
                pow *= 2;
                add += pow;
                if (add > e)
                    break;
                else
                    i--;


            }
            return mul % mod;

        }

        int Rsa_dec(int mod, int Qn, int e, int c)
        {
            int d =( Qn + 1 )/ e;
            int mul = 1;
            int add = 1;
            int pow = 1;
            for (int i = 0; i < 1; i++)
            {
                mul *= (int)(Math.Pow(11, pow) % mod);

                if (pow == 8)
                {

                }
                else
                {
                    pow *= 2;
                }
                add += pow;
                if (add > d)
                    break;
                else
                    i--;

            }
            return mul % mod;
        }
    }

}

   

No comments:

Post a Comment