diff --git a/.idea/misc.xml b/.idea/misc.xml
index a165cb3..df60b67 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -1,6 +1,6 @@
-
+
\ No newline at end of file
diff --git a/src/crypto/Crypto.java b/src/crypto/Crypto.java
index 51d57b7..d8f60c2 100644
--- a/src/crypto/Crypto.java
+++ b/src/crypto/Crypto.java
@@ -1,10 +1,107 @@
package crypto;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.HashMap;
import java.util.Scanner;
public class Crypto {
+ interface Strategy {
+ String encrypt(String text, int key);
+ String decrypt(String text, int key);
+ }
+ public class Xor implements Strategy{
+ @Override
+ public String encrypt(String text, int key) {
+ StringBuilder sb = new StringBuilder();
+ for (int i = 0; i < text.length(); i++) {
+ sb.append((char) (text.charAt(i) ^ key));
+ }
+ return sb.toString();
+ }
+ @Override
+ public String decrypt(String text, int key) {
+ StringBuilder sb = new StringBuilder();
+ for (int i = 0; i < text.length(); i++) {
+ sb.append((char) (text.charAt(i) ^ key));
+ }
+ return sb.toString();
+ }
+ }
+
public static void main(String[] args) {
- Scanner scanner = new Scanner(System.in);
- // write your code here
+ HashMap params = new HashMap<>();
+ for (int i = 0; i < args.length / 2; i++) {
+ params.put(args[i], args[i + 1]);
+ }
+ String operation = params.get("-mode");
+ String text = params.get("-data");
+ int key = Integer.parseInt(params.get("-key"));
+ String inputFileName = params.get("-in");
+ String outputFileName = params.get("-out");
+ String algorithm = params.get("-alg");
+ Strategy strategy;
+ //if (algorithm.isEmpty()) {
+ strategy = new Crypto().new Xor();
+ //}
+ if (operation.isEmpty()) {
+ operation = "enc";
+ }
+ if (!text.isEmpty() && !inputFileName.isEmpty()) {
+ Scanner scanner = new Scanner(System.in);
+ text = scanner.nextLine();
+ key = scanner.nextInt();
+ scanner.close();
+ }
+ if (inputFileName.isEmpty()) {
+ String result = "";
+ switch (operation) {
+ case "enc":
+ result = strategy.encrypt(text, key);
+ break;
+ case "dec":
+ result = strategy.decrypt(text, key);
+ break;
+ }
+ if (outputFileName.isEmpty()) {
+ System.out.println(result);
+ } else {
+ try {
+ FileWriter writer = new FileWriter(new File(outputFileName));
+ writer.write(result);
+ } catch (IOException e) {
+ System.out.println(e);
+ }
+ }
+ } else {
+ try {
+ Scanner scanner = new Scanner(new File(inputFileName));
+ while (scanner.hasNextLine()) {
+ String result = "";
+ switch (operation) {
+ case "enc":
+ result = strategy.decrypt(scanner.nextLine(), key);
+ break;
+ case "dec":
+ result = strategy.decrypt(scanner.nextLine(), key);
+ break;
+ }
+ if (outputFileName.isEmpty()) {
+ System.out.println(result);
+ } else {
+ try {
+ FileWriter writer = new FileWriter(new File(outputFileName));
+ writer.write(result);
+ } catch (IOException e) {
+ System.out.println(e);
+ }
+ }
+ }
+ } catch (FileNotFoundException e) {
+ System.out.println("Input file does not exist");
+ }
+ }
}
-}
+}
\ No newline at end of file