Feistel Cipher
-
Upload
pranav-doshi -
Category
Documents
-
view
985 -
download
0
description
Transcript of Feistel Cipher
![Page 1: Feistel Cipher](https://reader030.fdocuments.us/reader030/viewer/2022020806/55cf9d48550346d033acf786/html5/thumbnails/1.jpg)
7/15/2019 Feistel Cipher
http://slidepdf.com/reader/full/feistel-cipher 1/2
FEISTEL CIPHER
import java.io.*;
import java.util.*;
class feistel
{
public static void main(String args[]) throws Exception
{int a[]=new int[20];
int left[]=new int[10];
int right[]=new int[10];
int key[]=new int[10];
int temp[]=new int[10];
int m[]=new int[10];
int i,k;
Scanner sc=new Scanner(System.in);
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
System.out.println("Enter length of string:");
int n=Integer.parseInt(br.readLine());System.out.println("Enter plaintext:");
for(i=0;i<n;i++)
a[i]=sc.nextInt();
System.out.println("Enter key:");
for(i=0;i<(n/2);i++)
key[i]=sc.nextInt();
for(i=0;i<(n/2);i++)
left[i]=a[i];
for(int j=0;i<n;i++,j++)
right[j]=a[i];
System.out.println("Left string:");
for(i=0;i<(n/2);i++)
System.out.print(left[i]);
System.out.println();
System.out.println("Right string:");
for(i=0;i<(n/2);i++)
System.out.print(right[i]);
for(k=0;k<4;k++)
{
for(i=0;i<(n/2);i++)
{
if(key[i]==right[i])
temp[i]=0;else
temp[i]=1;
}
for(i=0;i<(n/2);i++)
{
if(left[i]==temp[i])
m[i]=0;
else
m[i]=1;
}
![Page 2: Feistel Cipher](https://reader030.fdocuments.us/reader030/viewer/2022020806/55cf9d48550346d033acf786/html5/thumbnails/2.jpg)
7/15/2019 Feistel Cipher
http://slidepdf.com/reader/full/feistel-cipher 2/2
for(i=0;i<(n/2);i++)
left[i]=right[i];
for(i=0;i<(n/2);i++)
right[i]=m[i];
System.out.println();
System.out.println("Round " + (k+1));
System.out.print("Left:");
for(i=0;i<(n/2);i++)
System.out.print(left[i]);System.out.println();
System.out.print("Right:");
for(i=0;i<(n/2);i++)
System.out.print(right[i]);
}
System.out.println();
System.out.println("Encrypted string is:");
for(i=0;i<(n/2);i++)
{
System.out.print(left[i]);
}
System.out.print(" ");
for(i=0;i<(n/2);i++)
System.out.print(right[i]);
}
}
/*OUTPUT:
C:\ins>java feistel
Enter length of string:
8
Enter plaintext:
0 1 0 1 0 1 0 1Enter key:
1 0 1 0
Left string:
0101
Right string:
0101
Round 1
Left:0101
Right:1010
Round 2
Left:1010Right:0101
Round 3
Left:0101
Right:0101
Round 4
Left:0101
Right:1010
Encrypted string is:
0101 1010
*/