Double Transposition in Java

/* Dalibor Labudovic*/
/* not stable */

package doubletransporition;

import java.io.*;
import java.util.*;
class NewDoubleTransposition
{
    public static void main(String args[])
    {
        NewEncryptAndDecrypt ned=new NewEncryptAndDecrypt();
        ned.input();
    }
}
class NewEncryptAndDecrypt
{
    Scanner sc=new Scanner(System.in);
    void input()
    {
        int ch;
        do
        {
            System.out.println("\n\t\t*****ENTER*****");
            System.out.println("\t1.Encrypt");
            System.out.println("\t2.Decrypt");
            System.out.println("\t0.Exit");
            ch=sc.nextInt();
            switch(ch)   
            {
                case 1:
                {
                    encrypt();
                    break;
                }
                case 2:
                {
                    decrypt();
                    break;
                }
            }
        }while(ch!=0);
    }
    void encrypt()
    {
       
       
        //String ip,t;
        char text[][],enc[][];
        int key,i,j,row[],col[],r,c;
        int k=0,m,n;
        System.out.print("Enter The Plain Text ");
        StringBuilder ip = new StringBuilder(sc.next());
        StringBuilder t = new StringBuilder(sc.nextLine());
//        ip=sc.next();
//        t=sc.nextLine();
        System.out.print("Enter The Number Of Rows ");
        r=sc.nextInt();
        System.out.print("Enter The Number Of Columns ");
        c=sc.nextInt();
        text=new char[r][c];
        enc=new char[r][c];
        row=new int[r];
        col=new int[c];
        for(i=0;i<r;i++)
        {
            for(j=0;j<c;j++)
            {
                text[i][j]=ip.charAt(k);
                k++;
            }
        }
        System.out.println("Enter The Row Key ");
        for(i=0;i<r;i++)
            row[i]=(sc.nextInt()-1);
        System.out.println("Enter The Column Key ");
        for(i=0;i<c;i++)
            col[i]=(sc.nextInt()-1);
        k=0;
        System.out.print("The Cipher Text Is ");
        for(i=0;i<r;i++)
        {
            m=row[i];
            for(j=0;j<c;j++)
            {
                n=col[j];
                enc[i][j]=text[m][n];
                System.out.print(""+Character.toUpperCase(enc[i][j]));
            }
        }
    }
    void decrypt()
    {
        String ip,t;
        char text[][],enc[][];
        int key,i,j,row[],col[],r,c;
        int k=0,m,n;
        System.out.print("Enter The Cipher Text ");
        ip=sc.next();
        t=sc.nextLine();
        System.out.print("Enter The Number Of Rows ");
        r=sc.nextInt();
        System.out.print("Enter The Number Of Columns ");
        c=sc.nextInt();
        text=new char[r][c];
        enc=new char[r][c];
        row=new int[r];
        col=new int[c];
        for(i=0;i<r;i++)
        {
            for(j=0;j<c;j++)
            {
                text[i][j]=ip.charAt(k);
                k++;
            }
        }
        System.out.println("Enter The Row Key ");
        for(i=0;i<r;i++)
            row[i]=(sc.nextInt()-1);
        System.out.println("Enter The Column Key ");
        for(i=0;i<c;i++)
            col[i]=(sc.nextInt()-1);
        k=0;
        for(i=0;i<r;i++)
        {
            m=row[i];
            for(j=0;j<c;j++)
            {
                n=col[j];
                enc[m][n]=text[i][j];
            }
        }
        System.out.print("The Retrieved Plain Text Is ");
        for(i=0;i<r;i++)
        {
            for(j=0;j<c;j++)
            {
                System.out.print(""+Character.toLowerCase(enc[i][j]));
            }
        }
    }   
}

Popular posts from this blog

CS3401 Practice Quiz 2 Part 2

CS3401 Practice Quiz 2 Part 1