[go: up one dir, main page]

0% found this document useful (0 votes)
56 views2 pages

CNS Lab

The document contains code snippets from multiple Java programs that implement different encryption algorithms including Caesar cipher, substitution cipher, Hill cipher, DES, Blowfish, and Rijndael. The programs take plaintext as input, encrypt it using the specific algorithm, and output the encrypted ciphertext. They also include code for decrypting the ciphertext back to the original plaintext. The algorithms demonstrate basic encryption concepts like using keys, performing mathematical operations on plaintext characters, and encoding/decoding bytes.

Uploaded by

195F3 Madhan
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
56 views2 pages

CNS Lab

The document contains code snippets from multiple Java programs that implement different encryption algorithms including Caesar cipher, substitution cipher, Hill cipher, DES, Blowfish, and Rijndael. The programs take plaintext as input, encrypt it using the specific algorithm, and output the encrypted ciphertext. They also include code for decrypting the ciphertext back to the original plaintext. The algorithms demonstrate basic encryption concepts like using keys, performing mathematical operations on plaintext characters, and encoding/decoding bytes.

Uploaded by

195F3 Madhan
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 2

AIM: Write a C program that contains a string (char pointer) with a value \Hello World’.

The program should XOR each character in this


string with 0 and display the result. PROGRAM: #include<stdlib.h> main() { char str[]="Hello World"; char str1[11]; int i,len; len=strlen(str);
for(i=0;i<len;i++) { str1[i]=str[i]^0; printf("%c",str1[i]); } printf("\n"); } Output: Hello World Hello World

AIM: Write a C program that contains a string (char pointer) with a value \Hello World’. The program should AND or and XOR each
character in this string with 127 and display the result. PROGRAM: #include <stdio.h> #include<stdlib.h> void main() { char str[]="Hello
World"; char str1[11]; char str2[11]=str[]; int i,len; len = strlen(str); for(i=0;i<len;i++) { str1[i] = str[i]&127; printf("%c",str1[i]); } printf("\n");
for(i=0;i<len;i++) { str3[i] = str2[i]^127; printf("%c",str3[i]); } printf("\n"); } Output: Hello World Hello World Hello World

AIM: Write a Java program to perform encryption and decryption using Ceaser Cipher PROGRAM: import java.io.BufferedReader; import
java.io.IOException; import java.io.InputStreamReader; import java.util.Scanner; public class CeaserCipher { static Scanner sc=new
Scanner(System.in); static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); public static void main(String[]
args) throws IOException { System.out.print("Enter any String: "); String str = br.readLine(); System.out.print("\nEnter the Key: "); int key =
sc.nextInt(); String encrypted = encrypt(str, key); System.out.println("\nEncrypted String is: " +encrypted); String decrypted =
decrypt(encrypted, key); System.out.println("\nDecrypted String is: " +decrypted); System.out.println("\n"); } public static String
encrypt(String str, int key) { String encrypted = ""; for(int i = 0; i < str.length(); i++) { int c = str.charAt(i); if (Character.isUpperCase(c)) { c = c
+ (key % 26); if (c > 'Z') } c = c - 26; else if (Character.isLowerCase(c)) { c = c + (key % 26); if (c > 'z') } c = c - 26; encrypted += (char) c; } return
encrypted; } public static String decrypt(String str, int key) { String decrypted = ""; for(int i = 0; i < str.length(); i++) { int c = str.charAt(i); if
(Character.isUpperCase(c)) { c = c - (key % 26); if (c < 'A') } c = c + 26; else if (Character.isLowerCase(c)) { c = c - (key % 26); if (c < 'a') } c = c +
26; decrypted += (char) c; } return decrypted; } } Output: Enter any String: Hello World Enter the Key: 5 Encrypted String is: MjqqtBtwqi
Decrypted String is: Hello World

AIM: Write a Java program to perform encryption and decryption using the Substitution Cipher PROGRAM: import java.io.*; import
java.util.*; public class SubstitutionCipher { static Scanner sc = new Scanner(System.in); static BufferedReader br = new
BufferedReader(new InputStreamReader(System.in)); public static void main(String[] args) throws IOException { String a =
"abcdefghijklmnopqrstuvwxyz"; String b = "zyxwvutsrqponmlkjihgfedcba"; System.out.print("Enter any string: "); String str = br.readLine();
String decrypt = ""; char c; for(int i=0;i<str.length();i++) { c = str.charAt(i); int j = a.indexOf(c); decrypt = decrypt+b.charAt(j); }
System.out.println("The encrypted data is: " +decrypt); } } Output: Enter any string: aceho The encrypted data is: zxvsl

AIM: Write a Java program to perform encryption and decryption using the Hill Cipher PROGRAM: import java.io.*; import java.util.*;
import java.io.*; public class HillCipher { static float[][] decrypt = new float[3][1]; static float[][] a = new float[3][3]; static float[][] b = new
float[3][3]; static float[][] mes = new float[3][1]; static float[][] res = new float[3][1]; static BufferedReader br = new BufferedReader(new
InputStreamReader(System.in)); static Scanner sc = new Scanner(System.in); public static void main(String[] args) throws IOException
{here getkeymes(); for(int i=0;i<3;i++) for(int j=0;j<1;j++) for(int k=0;k<3;k++) { res[i][j]=res[i][j]+a[i][k]*mes[k][j]; } System.out.print("\
nEncrypted string is : "); for(int i=0;i<3;i++) { System.out.print((char)(res[i][0]%26+97)); res[i][0]=res[i][0]; } inverse(); for(int i=0;i<3;i++)
for(int j=0;j<1;j++) for(int k=0;k<3;k++) { decrypt[i][j] = decrypt[i][j]+b[i][k]*res[k][j]; } System.out.print("\nDecrypted string is : "); for(int
i=0;i<3;i++){ System.out.print((char)(decrypt[i][0]%26+97)); } System.out.print("\n"); } public static void getkeymes() throws IOException
{ System.out.println("Enter 3x3 matrix for key (It should be inversible): "); for(int i=0;i<3;i++) for(int j=0;j<3;j++) a[i][j] = sc.nextFloat();
System.out.print("\nEnter a 3 letter string: "); String msg = br.readLine(); for(int i=0;i<3;i++) mes[i][0] = msg.charAt(i)-97; } public static
void inverse() { floatp,q; float[][] c = a; for(int i=0;i<3;i++) for(int j=0;j<3;j++) { if(i==j) b[i][j]=1; else b[i][j]=0; } for(int k=0;k<3;k++) { for(int
i=0;i<3;i++) { p = c[i][k]; q = c[k][k]; for(int j=0;j<3;j++) { if(i!=k) { c[i][j] = c[i][j]*q-p*c[k][j]; b[i][j] = b[i][j]*q-p*b[k][j];} } } } for(int i=0;i<3;i++)
for(int j=0;j<3;j++) { b[i][j] = b[i][j]/c[i][i]; } System.out.println(""); System.out.println("\nInverse Matrix is : "); for(int i=0;i<3;i++) { for(int
j=0;j<3;j++) System.out.print(b[i][j] + " "); System.out.print("\n"); } } } Output: Enter a 3 letter string: hai Encrypted string is :fdx Inverse
Matrix is : 0.083333336 0.41666666 -0.33333334 -0.41666666 -0.083333336 0.6666667 0.5833333 -0.083333336 -0.33333334 Decrypted
string is: hai
AIM: Write a Java program to implement the DES algorithm logic. PROGRAM: import java.util.*; import java.io.BufferedReader; import
java.io.InputStreamReader; import java.security.spec.KeySpec; import javax.crypto.Cipher; import javax.crypto.SecretKey; import
javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESedeKeySpec; import sun.misc.BASE64Decoder; import
sun.misc.BASE64Encoder; public class DES { private static final String UNICODE_FORMAT = "UTF8"; public static final String
DESEDE_ENCRYPTION_SCHEME = "DESede"; privateKeySpecmyKeySpec; privateSecretKeyFactorymySecretKeyFactory; private Cipher
cipher; byte[] keyAsBytes; private String myEncryptionKey; private String myEncryptionScheme; SecretKey key; static BufferedReader br =
new BufferedReader(new InputStreamReader(System.in)); public DES() throws Exception { myEncryptionKey =
"ThisIsSecretEncryptionKey"; myEncryptionScheme = DESEDE_ENCRYPTION_SCHEME; keyAsBytes =
myEncryptionKey.getBytes(UNICODE_FORMAT); myKeySpec = new DESedeKeySpec(keyAsBytes); mySecretKeyFactory =
SecretKeyFactory.getInstance(myEncryptionScheme); cipher = Cipher.getInstance(myEncryptionScheme); key =
mySecretKeyFactory.generateSecret(myKeySpec); } public String encrypt(String unencryptedString) { String encryptedString = null; try
{ cipher.init(Cipher.ENCRYPT_MODE, key); byte[] plainText = unencryptedString.getBytes(UNICODE_FORMAT); byte[] encryptedText =
cipher.doFinal(plainText); BASE64Encoder base64encoder = new BASE64Encoder(); encryptedString =
base64encoder.encode(encryptedText); } catch (Exception e) { e.printStackTrace(); } returnencryptedString; } public String decrypt(String
encryptedString) { String decryptedText=null; try { cipher.init(Cipher.DECRYPT_MODE, key); BASE64Decoder base64decoder = new
BASE64Decoder(); byte[] encryptedText = base64decoder.decodeBuffer(encryptedString); byte[] plainText =
cipher.doFinal(encryptedText); decryptedText= bytes2String(plainText); } catch (Exception e) { e.printStackTrace(); }
returndecryptedText; }private static String bytes2String(byte[] bytes) { StringBufferstringBuffer = new StringBuffer(); for (int i = 0; i
<bytes.length; i++) { stringBuffer.append((char) bytes[i]); } returnstringBuffer.toString(); } public static void main(String args []) throws
Exception { System.out.print("Enter the string: "); DES myEncryptor= new DES(); String stringToEncrypt = br.readLine(); String encrypted =
myEncryptor.encrypt(stringToEncrypt); String decrypted = myEncryptor.decrypt(encrypted); System.out.println("\nString To Encrypt: "
+stringToEncrypt); System.out.println("\nEncrypted Value : " +encrypted); System.out.println("\nDecrypted Value : " +decrypted);
System.out.println("");} } OUTPUT: Enter the string: Welcome String To Encrypt: Welcome Encrypted Value : BPQMwc0wKvg= Decrypted
Value : Welcome

AIM: Write a C/JAVA program to implement the BlowFish algorithm logic. PROGRAM: import java.io.*; import java.io.FileInputStream;
import java.io.FileOutputStream; import java.security.Key; import javax.crypto.Cipher; import javax.crypto.CipherOutputStream; import
javax.crypto.KeyGenerator; import sun.misc.BASE64Encoder; public class BlowFish { public static void main(String[] args) throws Exception
{ KeyGeneratorkeyGenerator = KeyGenerator.getInstance("Blowfish"); keyGenerator.init(128); Key secretKey =
keyGenerator.generateKey(); Cipher cipherOut = Cipher.getInstance("Blowfish/CFB/NoPadding"); cipherOut.init(Cipher.ENCRYPT_MODE,
secretKey); BASE64Encoder encoder = new BASE64Encoder(); byte iv[] = cipherOut.getIV(); if (iv != null) { System.out.println("Initialization
Vector of the Cipher: " + encoder.encode(iv)); } FileInputStream fin = new FileInputStream("inputFile.txt"); FileOutputStreamfout = new
FileOutputStream("outputFile.txt"); CipherOutputStreamcout = new CipherOutputStream(fout, cipherOut); int input = 0; while ((input =
fin.read()) != -1) { cout.write(input); } fin.close(); cout.close(); } } OUTPUT: Initialization Vector of the Cipher: dI1MXzW97oQ= Contents of
inputFile.txt: Hello World Contents of outputFile.txt: ùJÖ ̃ NåI“

AIM: Write a C/JAVA program to implement the Rijndael algorithm logic. PROGRAM: import java.security.*; import javax.crypto.*; import
javax.crypto.spec.*; import java.io.*; public class AES { public static String asHex (byte buf[]) { StringBuffer strbuf = new
StringBuffer(buf.length * 2); int i; for (i = 0; i < buf.length; i++) { if (((int) buf[i] & 0xff) < 0x10) strbuf.append("0");
strbuf.append(Long.toString((int) buf[i] & 0xff, 16)); } return strbuf.toString(); } public static void main(String[] args) throws Exception
{ String message="AES still rocks!!"; KeyGenerator kgen = KeyGenerator.getInstance("AES"); kgen.init(128); byte[] raw =
skey.getEncoded(); SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES"); Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, skeySpec); byte[] encrypted = cipher.doFinal((args.length == 0 ? message : args[0]).getBytes());
System.out.println("encrypted string: " + asHex(encrypted)); cipher.init(Cipher.DECRYPT_MODE, skeySpec); byte[] original =
cipher.doFinal(encrypted); String originalString = new String(original); System.out.println("Original string: " + originalString + " " +
asHex(original)); } } OUTPUT: Input your message: Hello KGRCET Encrypted text: 3ooo&&(*&*4r4 Decrypted text: Hello KGRCET

You might also like