assignment 3
This commit is contained in:
		
							
								
								
									
										
											BIN
										
									
								
								assignments/assignment3/Blowfish.class
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								assignments/assignment3/Blowfish.class
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										31
									
								
								assignments/assignment3/Blowfish.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								assignments/assignment3/Blowfish.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,31 @@ | ||||
| import java.util.Base64; | ||||
|  | ||||
| public class Blowfish implements Cryptable { | ||||
|     private static final String SECRET_KEY = "MySecretKey";  // Simple key for XOR | ||||
|  | ||||
|     @Override | ||||
|     public String encrypt(String data) { | ||||
|         byte[] dataBytes = data.getBytes(); | ||||
|         byte[] encryptedData = new byte[dataBytes.length]; | ||||
|  | ||||
|         // XOR encryption | ||||
|         for (int i = 0; i < dataBytes.length; i++) { | ||||
|             encryptedData[i] = (byte) (dataBytes[i] ^ SECRET_KEY.charAt(i % SECRET_KEY.length())); | ||||
|         } | ||||
|  | ||||
|         return Base64.getEncoder().encodeToString(encryptedData); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public String decrypt(String cryptedData) { | ||||
|         byte[] encryptedData = Base64.getDecoder().decode(cryptedData); | ||||
|         byte[] decryptedData = new byte[encryptedData.length]; | ||||
|  | ||||
|         // XOR decryption (same as encryption) | ||||
|         for (int i = 0; i < encryptedData.length; i++) { | ||||
|             decryptedData[i] = (byte) (encryptedData[i] ^ SECRET_KEY.charAt(i % SECRET_KEY.length())); | ||||
|         } | ||||
|  | ||||
|         return new String(decryptedData); | ||||
|     } | ||||
| } | ||||
							
								
								
									
										
											BIN
										
									
								
								assignments/assignment3/BubbleSort.class
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								assignments/assignment3/BubbleSort.class
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								assignments/assignment3/Cryptable.class
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								assignments/assignment3/Cryptable.class
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										4
									
								
								assignments/assignment3/Cryptable.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								assignments/assignment3/Cryptable.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | ||||
| public interface Cryptable { | ||||
|     String encrypt(String data) throws Exception; | ||||
|     String decrypt(String cryptedData) throws Exception; | ||||
| } | ||||
							
								
								
									
										
											BIN
										
									
								
								assignments/assignment3/Cryptabletest.class
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								assignments/assignment3/Cryptabletest.class
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										22
									
								
								assignments/assignment3/Cryptabletest.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								assignments/assignment3/Cryptabletest.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,22 @@ | ||||
| public class Cryptabletest { | ||||
|     public static void main(String[] args) { | ||||
|         try { | ||||
|             // Blowfish Example | ||||
|             Cryptable blowfish = new Blowfish(); | ||||
|             String blowfishEncrypted = blowfish.encrypt("Hello, Blowfish!"); | ||||
|             System.out.println("Blowfish Encrypted: " + blowfishEncrypted); | ||||
|             String blowfishDecrypted = blowfish.decrypt(blowfishEncrypted); | ||||
|             System.out.println("Blowfish Decrypted: " + blowfishDecrypted); | ||||
|  | ||||
|             // Twofish Example | ||||
|             Cryptable twofish = new Twofish(); | ||||
|             String twofishEncrypted = twofish.encrypt("Hello, Twofish!"); | ||||
|             System.out.println("Twofish Encrypted: " + twofishEncrypted); | ||||
|             String twofishDecrypted = twofish.decrypt(twofishEncrypted); | ||||
|             System.out.println("Twofish Decrypted: " + twofishDecrypted); | ||||
|  | ||||
|         } catch (Exception e) { | ||||
|             e.printStackTrace(); | ||||
|         } | ||||
|     } | ||||
| } | ||||
							
								
								
									
										
											BIN
										
									
								
								assignments/assignment3/MergeSort.class
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								assignments/assignment3/MergeSort.class
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								assignments/assignment3/NumberSorter.class
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								assignments/assignment3/NumberSorter.class
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										76
									
								
								assignments/assignment3/NumberSorter.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										76
									
								
								assignments/assignment3/NumberSorter.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,76 @@ | ||||
| // Define the NumberSorter interface | ||||
| interface NumberSorter { | ||||
|     void sortNumbers(int[] array); | ||||
| } | ||||
|  | ||||
| // BubbleSort class implementing the NumberSorter interface | ||||
| class BubbleSort implements NumberSorter { | ||||
|     @Override | ||||
|     public void sortNumbers(int[] array) { | ||||
|         int n = array.length; | ||||
|         for (int i = 0; i < n - 1; i++) { | ||||
|             for (int j = 0; j < n - i - 1; j++) { | ||||
|                 if (array[j] < array[j + 1]) { | ||||
|                     // Swap array[j] and array[j + 1] | ||||
|                     int temp = array[j]; | ||||
|                     array[j] = array[j + 1]; | ||||
|                     array[j + 1] = temp; | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
| // MergeSort class implementing the NumberSorter interface | ||||
| class MergeSort implements NumberSorter { | ||||
|     @Override | ||||
|     public void sortNumbers(int[] array) { | ||||
|         mergeSort(array, 0, array.length - 1); | ||||
|     } | ||||
|  | ||||
|     // Helper function for merge sort | ||||
|     private void mergeSort(int[] array, int left, int right) { | ||||
|         if (left < right) { | ||||
|             int mid = (left + right) / 2; | ||||
|             mergeSort(array, left, mid);         // Sort the left half | ||||
|             mergeSort(array, mid + 1, right);    // Sort the right half | ||||
|             merge(array, left, mid, right);      // Merge the sorted halves | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     // Merging two halves of the array in descending order | ||||
|     private void merge(int[] array, int left, int mid, int right) { | ||||
|         int n1 = mid - left + 1; | ||||
|         int n2 = right - mid; | ||||
|  | ||||
|         int[] leftArray = new int[n1]; | ||||
|         int[] rightArray = new int[n2]; | ||||
|  | ||||
|         System.arraycopy(array, left, leftArray, 0, n1); | ||||
|         System.arraycopy(array, mid + 1, rightArray, 0, n2); | ||||
|  | ||||
|         int i = 0, j = 0, k = left; | ||||
|         while (i < n1 && j < n2) { | ||||
|             if (leftArray[i] > rightArray[j]) { | ||||
|                 array[k] = leftArray[i]; | ||||
|                 i++; | ||||
|             } else { | ||||
|                 array[k] = rightArray[j]; | ||||
|                 j++; | ||||
|             } | ||||
|             k++; | ||||
|         } | ||||
|  | ||||
|         while (i < n1) { | ||||
|             array[k] = leftArray[i]; | ||||
|             i++; | ||||
|             k++; | ||||
|         } | ||||
|  | ||||
|         while (j < n2) { | ||||
|             array[k] = rightArray[j]; | ||||
|             j++; | ||||
|             k++; | ||||
|         } | ||||
|     } | ||||
| } | ||||
							
								
								
									
										
											BIN
										
									
								
								assignments/assignment3/SorterTest.class
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								assignments/assignment3/SorterTest.class
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										28
									
								
								assignments/assignment3/SorterTest.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								assignments/assignment3/SorterTest.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,28 @@ | ||||
| public class SorterTest { | ||||
|     public static void main(String[] args) { | ||||
|         int[] array1 = {5, 3, 8, 6, 2, 7, 4}; | ||||
|         int[] array2 = {9, 1, 4, 5, 3, 7, 8}; | ||||
|  | ||||
|         // Create objects of BubbleSort and MergeSort | ||||
|         NumberSorter bubbleSort = new BubbleSort(); | ||||
|         NumberSorter mergeSort = new MergeSort(); | ||||
|  | ||||
|         // Sort using BubbleSort | ||||
|         System.out.println("Bubble Sort:"); | ||||
|         bubbleSort.sortNumbers(array1); | ||||
|         printArray(array1); | ||||
|  | ||||
|         // Sort using MergeSort | ||||
|         System.out.println("\nMerge Sort:"); | ||||
|         mergeSort.sortNumbers(array2); | ||||
|         printArray(array2); | ||||
|     } | ||||
|  | ||||
|     // Utility function to print the array | ||||
|     private static void printArray(int[] array) { | ||||
|         for (int num : array) { | ||||
|             System.out.print(num + " "); | ||||
|         } | ||||
|         System.out.println(); | ||||
|     } | ||||
| } | ||||
							
								
								
									
										
											BIN
										
									
								
								assignments/assignment3/Twofish.class
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								assignments/assignment3/Twofish.class
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										31
									
								
								assignments/assignment3/Twofish.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								assignments/assignment3/Twofish.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,31 @@ | ||||
| import java.util.Base64; | ||||
|  | ||||
| public class Twofish implements Cryptable { | ||||
|     private static final String SECRET_KEY = "AnotherSecretKey";  // Simple key for XOR | ||||
|  | ||||
|     @Override | ||||
|     public String encrypt(String data) { | ||||
|         byte[] dataBytes = data.getBytes(); | ||||
|         byte[] encryptedData = new byte[dataBytes.length]; | ||||
|  | ||||
|         // XOR encryption | ||||
|         for (int i = 0; i < dataBytes.length; i++) { | ||||
|             encryptedData[i] = (byte) (dataBytes[i] ^ SECRET_KEY.charAt(i % SECRET_KEY.length())); | ||||
|         } | ||||
|  | ||||
|         return Base64.getEncoder().encodeToString(encryptedData); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public String decrypt(String cryptedData) { | ||||
|         byte[] encryptedData = Base64.getDecoder().decode(cryptedData); | ||||
|         byte[] decryptedData = new byte[encryptedData.length]; | ||||
|  | ||||
|         // XOR decryption (same as encryption) | ||||
|         for (int i = 0; i < encryptedData.length; i++) { | ||||
|             decryptedData[i] = (byte) (encryptedData[i] ^ SECRET_KEY.charAt(i % SECRET_KEY.length())); | ||||
|         } | ||||
|  | ||||
|         return new String(decryptedData); | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user