From db2dbc5c19385deb561641e3c46257642ea32e99 Mon Sep 17 00:00:00 2001 From: k0rrluna Date: Tue, 24 Dec 2024 04:22:54 +0300 Subject: [PATCH] assigment3 --- assignments/assignment3/Blowfish.java | 40 +++++++++++---------- assignments/assignment3/Cryptabletest.java | 2 +- assignments/assignment3/HumanTest.class | Bin 1188 -> 1196 bytes assignments/assignment3/HumanTest.java | 3 +- assignments/assignment3/Twofish.java | 40 +++++++++++---------- 5 files changed, 45 insertions(+), 40 deletions(-) diff --git a/assignments/assignment3/Blowfish.java b/assignments/assignment3/Blowfish.java index f611e6c..5e0d667 100644 --- a/assignments/assignment3/Blowfish.java +++ b/assignments/assignment3/Blowfish.java @@ -1,31 +1,33 @@ +import javax.crypto.Cipher; +import javax.crypto.KeyGenerator; +import javax.crypto.SecretKey; +import javax.crypto.spec.SecretKeySpec; import java.util.Base64; public class Blowfish implements Cryptable { - private static final String SECRET_KEY = "MySecretKey"; // Simple key for XOR + private static final String ALGORITHM = "Blowfish"; + + private SecretKey secretKey; + + public Blowfish() throws Exception { + KeyGenerator keyGen = KeyGenerator.getInstance(ALGORITHM); + keyGen.init(128); // Blowfish key length is 128 bits + this.secretKey = keyGen.generateKey(); + } @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())); - } - + public String encrypt(String data) throws Exception { + Cipher cipher = Cipher.getInstance(ALGORITHM); + cipher.init(Cipher.ENCRYPT_MODE, secretKey); + byte[] encryptedData = cipher.doFinal(data.getBytes()); 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())); - } - + public String decrypt(String cryptedData) throws Exception { + Cipher cipher = Cipher.getInstance(ALGORITHM); + cipher.init(Cipher.DECRYPT_MODE, secretKey); + byte[] decryptedData = cipher.doFinal(Base64.getDecoder().decode(cryptedData)); return new String(decryptedData); } } diff --git a/assignments/assignment3/Cryptabletest.java b/assignments/assignment3/Cryptabletest.java index 0185233..17c878f 100644 --- a/assignments/assignment3/Cryptabletest.java +++ b/assignments/assignment3/Cryptabletest.java @@ -19,4 +19,4 @@ public class Cryptabletest { e.printStackTrace(); } } -} +} \ No newline at end of file diff --git a/assignments/assignment3/HumanTest.class b/assignments/assignment3/HumanTest.class index 4cbd443148245c9356575b2a573bab1678dfe318..c1f6e5f8d025a508f673e9f895d3f41ddaac4a6c 100644 GIT binary patch delta 41 tcmZ3&xrTFtDGQ_DWHT0XaWMu~1_lOZ20jKB1`t~bNUJiiO|D_l005D)1&sgz delta 33 ncmZ3(xrB3rDGQ_9WHT0Xem(|f1_mJJV_;!WWni7$!lD5HZC(XA diff --git a/assignments/assignment3/HumanTest.java b/assignments/assignment3/HumanTest.java index 56fc65e..dfb2bb6 100644 --- a/assignments/assignment3/HumanTest.java +++ b/assignments/assignment3/HumanTest.java @@ -1,6 +1,7 @@ public class HumanTest { public static void main(String[] args) { Worker worker = new Worker("Koray", "Altinsoy", "Embedded Systems Engineer"); - System.out.println("First name: "+worker.getFName()+", Last Name: "+worker.getLName()+", Job Title:"+worker.getJobTitle()); + System.out.println("First name: "+worker.getFName()+", Last Name: "+ + worker.getLName()+", Job Title:"+worker.getJobTitle()); } } diff --git a/assignments/assignment3/Twofish.java b/assignments/assignment3/Twofish.java index 8fdf245..65257bf 100644 --- a/assignments/assignment3/Twofish.java +++ b/assignments/assignment3/Twofish.java @@ -1,31 +1,33 @@ +import javax.crypto.Cipher; +import javax.crypto.KeyGenerator; +import javax.crypto.SecretKey; +import javax.crypto.spec.SecretKeySpec; import java.util.Base64; public class Twofish implements Cryptable { - private static final String SECRET_KEY = "AnotherSecretKey"; // Simple key for XOR + private static final String ALGORITHM = "Twofish"; + + private SecretKey secretKey; + + public Twofish() throws Exception { + KeyGenerator keyGen = KeyGenerator.getInstance(ALGORITHM); + keyGen.init(256); // Twofish key length can be 128, 192, or 256 bits + this.secretKey = keyGen.generateKey(); + } @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())); - } - + public String encrypt(String data) throws Exception { + Cipher cipher = Cipher.getInstance(ALGORITHM); + cipher.init(Cipher.ENCRYPT_MODE, secretKey); + byte[] encryptedData = cipher.doFinal(data.getBytes()); 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())); - } - + public String decrypt(String cryptedData) throws Exception { + Cipher cipher = Cipher.getInstance(ALGORITHM); + cipher.init(Cipher.DECRYPT_MODE, secretKey); + byte[] decryptedData = cipher.doFinal(Base64.getDecoder().decode(cryptedData)); return new String(decryptedData); } }