From a616052ff574dd66bb603b2e6d03e1ec08b0c431 Mon Sep 17 00:00:00 2001 From: k0rrluna Date: Mon, 23 Dec 2024 03:12:44 +0300 Subject: [PATCH] assignment 3 --- assignments/assignment3/Blowfish.class | Bin 0 -> 1115 bytes assignments/assignment3/Blowfish.java | 31 ++++++++ assignments/assignment3/BubbleSort.class | Bin 0 -> 427 bytes assignments/assignment3/Cryptable.class | Bin 0 -> 234 bytes assignments/assignment3/Cryptable.java | 4 ++ assignments/assignment3/Cryptabletest.class | Bin 0 -> 1374 bytes assignments/assignment3/Cryptabletest.java | 22 ++++++ assignments/assignment3/MergeSort.class | Bin 0 -> 904 bytes assignments/assignment3/NumberSorter.class | Bin 0 -> 135 bytes assignments/assignment3/NumberSorter.java | 76 ++++++++++++++++++++ assignments/assignment3/SorterTest.class | Bin 0 -> 1315 bytes assignments/assignment3/SorterTest.java | 28 ++++++++ assignments/assignment3/Twofish.class | Bin 0 -> 1118 bytes assignments/assignment3/Twofish.java | 31 ++++++++ 14 files changed, 192 insertions(+) create mode 100644 assignments/assignment3/Blowfish.class create mode 100644 assignments/assignment3/Blowfish.java create mode 100644 assignments/assignment3/BubbleSort.class create mode 100644 assignments/assignment3/Cryptable.class create mode 100644 assignments/assignment3/Cryptable.java create mode 100644 assignments/assignment3/Cryptabletest.class create mode 100644 assignments/assignment3/Cryptabletest.java create mode 100644 assignments/assignment3/MergeSort.class create mode 100644 assignments/assignment3/NumberSorter.class create mode 100644 assignments/assignment3/NumberSorter.java create mode 100644 assignments/assignment3/SorterTest.class create mode 100644 assignments/assignment3/SorterTest.java create mode 100644 assignments/assignment3/Twofish.class create mode 100644 assignments/assignment3/Twofish.java diff --git a/assignments/assignment3/Blowfish.class b/assignments/assignment3/Blowfish.class new file mode 100644 index 0000000000000000000000000000000000000000..7fd05115e799e3e74722718427bcdd31f09d5b8e GIT binary patch literal 1115 zcmb7@-A)rh6vzM5Zkcx3(po7(1ucrW1xiH_MLv{WYC`xhu?-2~!YpMhi|dwbx0-t4 zh4BS^1#i67n?ls^0KSCp;RSkjTN+d}G1;9nnRDhpzjNly*W*t|0OqkIBY+@>q#%S2 zhWMWG+{jsmUCuq+-V-I4p<~XpO?QDIsAe`~gc0G86?8)RCA{D|rd?(TmxZgm%W6oX6*dAn5E5e`GYnpyR;Iu$b1^3KXg zW02#Df~y!}=>1zDLznOci+MxlW2H3@f+}waKw0{>9Pq(ykGVa*Qd+ zV*D(QwoJ#4FUZiNHq$zNIMv&$+YRqFCm2E=;s(bgLqvD#`>wHV3BoGm^+);QrhNxb#tFB?Y8-`V*9gWcSvW+CZ)+lEGZ>o4V>F=Ao==j@r}gZ|M+%@zH9@RKhWlYFP|bQ z&@F`!feZ!R#5+oM0&&ceCx*Z=q8xMdvG3HF3=3_JS1peDLtG=2%zvSLMtC!OfZXpa rN$;%@MISx46voL;QEl2R@lz}T-18H;k43TxN-0fSG)iTJtd7V}RFLft literal 0 HcmV?d00001 diff --git a/assignments/assignment3/Blowfish.java b/assignments/assignment3/Blowfish.java new file mode 100644 index 0000000..f611e6c --- /dev/null +++ b/assignments/assignment3/Blowfish.java @@ -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); + } +} diff --git a/assignments/assignment3/BubbleSort.class b/assignments/assignment3/BubbleSort.class new file mode 100644 index 0000000000000000000000000000000000000000..a64e244204f97f9ce681bc87f3567ea4f46bee4d GIT binary patch literal 427 zcmYjMIZnes6n#IQiHQ@)BDp{$5*5mVoGulK#3Cft6hUcdu#*vT$buY)6XYI9X{f1? zD0~144ushL*c51H{__6v-n@OkMgZC20&?jnp6{r1$)( zA9e^vwbnPWMz9VRo;Oy#SrD4A2)WC}#8ZLJRX`Ajv!Np7&;6-NDpxMI6S8yeNRT-} zR1 zGY2eLQ~1-~Or*Z=?k literal 0 HcmV?d00001 diff --git a/assignments/assignment3/Cryptable.class b/assignments/assignment3/Cryptable.class new file mode 100644 index 0000000000000000000000000000000000000000..dd95defdb2b241b1fe351045c29faa027280d223 GIT binary patch literal 234 zcmX^0Z`VEs1_oOOUUmj1Mg~sjqRN7j#H5^5b_Nzk27#=^vPAuy#JqHU|D>$ca%w?IW`15VI|C;pgD^rHTn1=xN-ES~ zuHgLAqU2P!%$!t420plp^g!C!7#SEDn1L>4U|<3|kd=WA$Y%%gSb#JKP=pIr1SrZ4 IQp>;t0Dyxwx&QzG literal 0 HcmV?d00001 diff --git a/assignments/assignment3/Cryptable.java b/assignments/assignment3/Cryptable.java new file mode 100644 index 0000000..2ce5214 --- /dev/null +++ b/assignments/assignment3/Cryptable.java @@ -0,0 +1,4 @@ +public interface Cryptable { + String encrypt(String data) throws Exception; + String decrypt(String cryptedData) throws Exception; +} diff --git a/assignments/assignment3/Cryptabletest.class b/assignments/assignment3/Cryptabletest.class new file mode 100644 index 0000000000000000000000000000000000000000..7ae1be6ef4aa6d6429d56553b1f144b83030f159 GIT binary patch literal 1374 zcmaJ>-BQy)6#llfOo#XHB7q)01_x!B#DbH20Re&_7|_+9%B;3-yP2%tqlP(=t~hK_B%$I}Kk zH`A*d+oB{H!ZW(5%UOn&$U1D>ZoL8EQov+7-lA zbfA+VnzIk8l5ZG-K@n!j{bLwS=Fj&lN?SKKvtt)cQFNhOL63@F^fhrT9yn4|h?=!a z>3V#qZl&K)DoF_iuVghkXhOwRmquTO?}(gbmbiSU%Pm?tlAF?r;X3*i45+w)L541m zRdXKVU3Ie>CT(;X?{)XcH&xtnH&V*NJEI1Mgo07BtnFLAW+Sdz?JdTds~GgtrT48!N;*3CU@N2L9#`z2ZAC283Q3||`ctq1x^m$+Fr zgfpDCtexFz_9FKNOA~PIpeim2Z#=!<@J$U^Pm$w>QPic#MleU!KWp;A1;3F+IWx#2 zm~V8=`}ME878$zhW&Q`W)Zl5vFsRF>DeRoV9Y;6{UNekbQ13EP6ciW+{vS%W+E)-m zn5MRKzW}u=y#X}dqrZNd8O@>bW3WS7Fx;onb-U{*9^fI(Zs<>fDl|K%P~IOSnxD{O zCr|?@e1n#%;RV=@Hrgn*#_4I)e1z3|4IH!gVNODvN=M!r|b HV+Dyn12Ipt literal 0 HcmV?d00001 diff --git a/assignments/assignment3/Cryptabletest.java b/assignments/assignment3/Cryptabletest.java new file mode 100644 index 0000000..0185233 --- /dev/null +++ b/assignments/assignment3/Cryptabletest.java @@ -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(); + } + } +} diff --git a/assignments/assignment3/MergeSort.class b/assignments/assignment3/MergeSort.class new file mode 100644 index 0000000000000000000000000000000000000000..4df11e5c47318483c42c02615353c9ca4c9262be GIT binary patch literal 904 zcmZuwOHUI~6#nkKZs&nKuTq>rs1i!Ylwfou;F|<(1X|3|0Nh2!fCQOCv7ka@7~1h) z`}1|bxjny8-U%vg2JKF*S!>^8kh61}22#*D3=1YK27NsUw}WCUB%a>r+dR8fC=?R< z1q*{1Vo+n8Ar)gWID%1*F$)40&y_A7?ze*mrS!wlKdiL&4jFRUwSRkCF8n7%i8;m@ ztY-&}au7zn1tEj7(y9gwgKM>BkRZ?fa-AaPJ~5KWJ~c_r&22Ia6x)7fcirEMSsYgw zq^$yjQEVNAm0-0NNr%st$Vc5_ismDM;Sx<(p_hhAUYab2ZWcvy-@v|*!7xE*1cL|+ zmtoTxQD;de(QW2j**#LKU%~r=Xkj3#K^diJ3#X!&BvJ{<+D;cUwo_8;o|1EIp^!Z1 z3PmY7u|*Lw2BM5o+`!haq36>n zVdOty#1&@jZ*+9l!(ik_$VSIt9h3D=ekEFQmKOuZNwyd`r#S9^>8p4zE;z1Z0C|jJ zo(8@^-+Y6tn^?pxtinSPxAB6!GM2E5Wi;teY2yLj;2}DAgtu71J7T`aV|>69d_)1C i@id-R2HFWpEshk&B#R!p6BC#-)$wr};}nfg!t`Ir4VVZ3 literal 0 HcmV?d00001 diff --git a/assignments/assignment3/NumberSorter.class b/assignments/assignment3/NumberSorter.class new file mode 100644 index 0000000000000000000000000000000000000000..41f8a2c602ec649a2972304ad0775f12084e09e4 GIT binary patch literal 135 zcmX^0Z`VEs1_oOOPId++Mg|_g(%hufqTu|ZlGGx01{OvJfvm)`ME#t^ymWp4q^#8B z5=I8@VxTlcVKE~Et46e^W*8#_S8#r5QF5wVW=<+2gCMdwdLSd%7#J8Cn1NOSX`r#J P3_t;(2s@BuV&DJ(@7W)Y literal 0 HcmV?d00001 diff --git a/assignments/assignment3/NumberSorter.java b/assignments/assignment3/NumberSorter.java new file mode 100644 index 0000000..514e785 --- /dev/null +++ b/assignments/assignment3/NumberSorter.java @@ -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++; + } + } +} diff --git a/assignments/assignment3/SorterTest.class b/assignments/assignment3/SorterTest.class new file mode 100644 index 0000000000000000000000000000000000000000..29f3abf2be35bc3c24dab530f98dcb33010e46de GIT binary patch literal 1315 zcmaJ>OH&g;5dJ2+$t24nE67{$1)2~bz8^$UiK4Lru?&Tk;xvR27Lwi6?uIHZ9@HP< z*^6gA;Iq7V^N08wJgGgqsR9ei!|wF(rsAkOM4OIyLnTCNJL~z(atDrMgk#ji37n(^i>=10^c27J7&?41BA3q)Pp=d+ z%LY#449A#>aTQ@i*d^&x=|-6CuIGuJB+e0?5w;+zx0~9VF)@KGLw`eT$%5a6nH92o9lCC|4)2hd`b#ty8_<<*y3o_Vn*Zi&o zZW=T@vmCdT!aEFOdt+le+wPXkMLmy1&x=~%dOHlS_wPy@7?C~{&RSjiV#=$jI*~riFyE|=*Jj_XflU!g%F*H{RZc_%GfWu05n_=!){=P V)+A-m({mRE`ZCD6hj~22;9qaHFtY#v literal 0 HcmV?d00001 diff --git a/assignments/assignment3/SorterTest.java b/assignments/assignment3/SorterTest.java new file mode 100644 index 0000000..6fe4431 --- /dev/null +++ b/assignments/assignment3/SorterTest.java @@ -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(); + } +} diff --git a/assignments/assignment3/Twofish.class b/assignments/assignment3/Twofish.class new file mode 100644 index 0000000000000000000000000000000000000000..e0bae1e44563f7d0cc2cf344d2e7d94f46ebaeb9 GIT binary patch literal 1118 zcmb7@-A)rx5Xb+g-E!J>p|#Qq6%-V43$ztM6#0@aH6eVM*oK5~VU}`i7weX6Pc?Yq zh4BS^1#i67n?ls^0KSCp;RQOoEe$G~m~?ke&&>SKZ|2N?J^pkAU=B+veDHH98UpBG zi0qor%}m9#OPPn;yP_x=I%X}~lJg9HJ-MMGh!BUW;T*JI!t>Ix>=Hw;BxH79iW-BW zC%3X3T@1YNqWZ+Dm4k>-(xP3JW#QyS(GhY*?7N~-4HwW&r&WYql4b9-W!Dkca1lM^ zD3(oUk$4n+Icca!;1WllhJIW=;iyZilF6DiF*V7c5=YK1R(FKM(5EL?y~<9747I#7 zDh4pfaaF@L3^DZlEs&v0c!GuMNwIN#E89}`de+=0#RP^m+<@NXSQ7u@Xn84X1fv{d z8d6A~#nG1O*zp7z;(D{J(}z>f-M-y)Z*-g?;395tOfZBDXMazc+Z91r`JC}6S9rXV z+hmCTslw1{RPCBHZMk7q>Xe}v)Jul&s%4Ay`m=4}6q-_;y5b5m44;K_rgmPM#iwiL zo+rUE$Kcz_(wtCXO(`{Btvf~Wz;a==*7&5|tD(Qkwk;f^V%BQznDO>C^Hzs2h)$Yo zhFkO`Fp1k_r)c1P2*Xcnnss{Lp`CuRjBH@!0PG_z81B;Bb;Apt#ywiQp)YASKz4ex z0lqeN^d-3NpHgDV*wH%-q{zmUiD)>cM8gf7-)kWD`fcHj!ruS*c8K0o16Mv!vd@!G zkQC^W0ti8chHl~=B|DA?X2=tU?--pNv-D%%X)YP&+Z?Z29CL@bPAJL$Livo~X6gW$ u-&tbrr$!XL^tC0BCOb*JX|qI5vG}my6>=YoWTRBl0HtK9lo7H9LO%f#rS53} literal 0 HcmV?d00001 diff --git a/assignments/assignment3/Twofish.java b/assignments/assignment3/Twofish.java new file mode 100644 index 0000000..8fdf245 --- /dev/null +++ b/assignments/assignment3/Twofish.java @@ -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); + } +}