Showing posts with label CodeBase. Show all posts
Showing posts with label CodeBase. Show all posts

7/23/2014

Shift Cipher Code

Shift Cipher:
Another encryption algorithm yet les powerfull than RSA is shift cipher algorithm.
And caesar cipher is a special case of shift cipher where key=3



But the code provided below works for any alphabetical word and not for symbols and no's and even Capital alphabets.




RSA Algorithm Code

I would like to share some 100% workiing programs which are generally included in Computer Science & Engineering Subjects like Network Security.
Encryption Algorithm :-
RSA is an encryption algorithm used to transfer data securely on network.
It is an asymmetric algorithm as there are two keys one for locking the message and other for opening the message.

RSA Algorithm in java for number  as input.

/*Author Name:Bhanupratap Singh
    Date:11/03/2014
    Subject:Internet and Network Security
*/
import java.math.BigInteger;
import java.math.BigInteger.*;
import java.util.*;
class RSA
{
    BigInteger cTextValue,cdTextValue;
    int count=0,err[],pTextValue,q,e,d,n,func_n,p;
    Scanner sc =new Scanner(System.in);
    public void getInput()
    {
        System.out.println("Enter the plaintext");
        pTextValue=sc.nextInt();   
        System.out.println(pTextValue);
        System.out.println("Enter the value of p");
        p=sc.nextInt();
        System.out.println("Enter the value of q");
        q=sc.nextInt();
    }
    public int gcd(int a,int b)
    {
        if(b==0)
        return a;
        return gcd(b,a%b);
    }
    public void keyGenerator()
    {   
        n=p*q;
        func_n=(p-1)*(q-1);
        err=new int[func_n];int j=0;
        for(int i=2;i<func_n;i++)
        {
        if(gcd(i,func_n)==1)
            {
               
                    e=i;
                    err[j]=e;
                    j++;
            }           
        }
        for(int l=0;l<func_n;l++)
        {
            if(err[l]==0)
            break;           
            else
            count++;
        }
        System.out.println("The posssible values of e are :");
        for(int c=0;c<count;c++)
        System.out.println(c+") "+err[c]);
        System.out.println("Enter the value of e you would like to use from displayed options...");
        e=sc.nextInt();
        for(int k=1;k<func_n;k++)
        {
        if(((k*e)%func_n)==1)
            {
            d=k;
            break;
            }
        }
        System.out.println("Public key: "+"{"+e+","+n+"}");
        System.out.println("Private key: "+"{"+d+","+n+"}");
    }
    public BigInteger calculate(int a,int b,int n1)
    {
        BigInteger c=new BigInteger(Integer.toString(a));
        BigInteger d=new BigInteger(Integer.toString(b));
        BigInteger n2=new BigInteger(Integer.toString(n));
        BigInteger res=c.modPow(d, n2);
        return res;
    }
     public BigInteger calculate(BigInteger a,int b,int n1)
    {
        BigInteger c=a;
        BigInteger d=new BigInteger(Integer.toString(b));
        BigInteger n2=new BigInteger(Integer.toString(n));
        BigInteger res=c.modPow(d, n2);
        return res;
    }
    public void enCryption()
    {   
        cTextValue=calculate(pTextValue,e,n);
        System.out.println("The cipher text value is: "+cTextValue);
    }
    public void deCryption()
    {
        cdTextValue=calculate(cTextValue, d, n);
        System.out.println("The plain text value is: "+cdTextValue);
    }
}

public class RSADemo {
    public static void main(String args[])
    {
    RSA r=new RSA();
    r.getInput();
    r.keyGenerator();
    r.enCryption();
    r.deCryption();
    }
   
}
/*OUTPUT
C:\Users\Home-Technology\Desktop\InsJava>javac RSADemo.java

C:\Users\Home-Technology\Desktop\InsJava>java RSADemo
Enter the plaintext
5
5
Enter the value of p
7
Enter the value of q
11
The posssible values of e are :
0) 7
1) 11
2) 13
3) 17
4) 19
5) 23
6) 29
7) 31
8) 37
9) 41
10) 43
11) 47
12) 49
13) 53
14) 59
Enter the value of e you would like to use from displayed options...
41
Public key: {41,77}
Private key: {41,77}
The cipher text value is: 38
The plain text value is: 5
*/


The sbove code will work for any key and plaintext.
NOTE:But plaintext should be a number .





7/22/2014

Cygwin Compiler for C/C++

What...


 ...is it?

Cygwin is:
  • a large collection of GNU(GNU's Not Unix!) and Open Source tools which provide functionality similar to a Linux distribution on Windows.
  • a DLL (cygwin1.dll) which provides substantial POSIX API functionality. 

 ...isn't it?
  • a method to run native Linux apps on Windows.
 Cygwin can be used to compile & execute C,C++,FORTRAN and many other language programs. 

Notes:
POSIX-
Portable Operating System Interface is a  family of standards specified by the IEEE for maintaining compatibility between operating systems. POSIX defines the application programming interface (API), along with command line shells and utility interfaces, for software compatibility with variants of Unix and other operating systems.
 


<<-------Compilers for C++------>>

List of C/C++ Compilers:
  • Turbo C++
  • Borland C++
  • GCC/G++
  • Digital Mars C/C++ Compiler
  • Xcode
  • Tiny C Compiler
  • SubC
  • Failsafe C
  • Pelles C
  • CC65
  • lcc
  • SDCC
  • nesC
  • Cc386