From 1a2d05559c676662bf880945f3ed913de526cc3d Mon Sep 17 00:00:00 2001 From: Nikita Karpov Date: Thu, 13 Dec 2018 22:52:31 +0300 Subject: [PATCH 1/3] -add enc; -add dec; --- .idea/misc.xml | 2 +- src/crypto/Crypto.java | 35 ++++++++++++++++++++++++++++++++++- 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/.idea/misc.xml b/.idea/misc.xml index a165cb3..cbb200f 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..7851fd1 100644 --- a/src/crypto/Crypto.java +++ b/src/crypto/Crypto.java @@ -5,6 +5,39 @@ public class Crypto { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); - // write your code here + + String target = scanner.nextLine(); +// String message = "Wabc"; + String message = scanner.nextLine(); + int offset = scanner.nextInt(); + + if(target.equals("enc")){ + System.out.println(enc(message, offset)); + } else if(target.equals("dec")){ + System.out.println(dec(message, offset)); + } + + } + public static String enc(String originalStr, int offset){ + return offsetAll(originalStr, offset); + } + + public static String dec(String originalStr, int offset){ + return offsetAll(originalStr, -offset); + } + public static String offsetAll(String originalStr, int offset){ + final int lettersStar = 97; + final int lettersAmount = 26; + + StringBuilder out = new StringBuilder(); + char[] letters = new char[originalStr.length()]; + originalStr.getChars(0, originalStr.length(), letters, 0 ); + + for (int letter : letters){ + letter = (letter + offset); + out.append((char)letter); + } + + return out.toString(); } } From 6c7b8f772fb144087700d4186455ad497ce7a8f5 Mon Sep 17 00:00:00 2001 From: Nikita Karpov Date: Fri, 14 Dec 2018 20:45:21 +0300 Subject: [PATCH 2/3] Using command-line arguments --- src/crypto/Crypto.java | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/crypto/Crypto.java b/src/crypto/Crypto.java index 7851fd1..1a5cf53 100644 --- a/src/crypto/Crypto.java +++ b/src/crypto/Crypto.java @@ -6,10 +6,22 @@ public class Crypto { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); - String target = scanner.nextLine(); -// String message = "Wabc"; - String message = scanner.nextLine(); - int offset = scanner.nextInt(); + String target; + if(args.length > 1 && args[0].equals("-mode")){ + target = args[1]; + } else{ + target = "enc"; + } + + String message; + int offset; + if(args.length == 6 && args[4].equals("-data")){ + message = args[5]; + offset= Integer.parseInt(args[3]); + } else{ + message = scanner.nextLine(); + offset = scanner.nextInt(); + } if(target.equals("enc")){ System.out.println(enc(message, offset)); From 3bd4e9eb6ce83d48d27d102ef2bfe87527da4d22 Mon Sep 17 00:00:00 2001 From: Nikita Karpov Date: Mon, 17 Dec 2018 22:13:39 +0300 Subject: [PATCH 3/3] Working with files --- src/crypto/Crypto.java | 77 ++++++++++++++++++++++++++++++++++++------ 1 file changed, 67 insertions(+), 10 deletions(-) diff --git a/src/crypto/Crypto.java b/src/crypto/Crypto.java index 1a5cf53..994d0cc 100644 --- a/src/crypto/Crypto.java +++ b/src/crypto/Crypto.java @@ -1,35 +1,92 @@ package crypto; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileWriter; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.sql.SQLOutput; +import java.util.Arrays; +import java.util.List; import java.util.Scanner; public class Crypto { public static void main(String[] args) { + final String MODE = "-mode"; + final String KEY= "-key"; + final String DATA= "-data"; + final String IN = "-in"; + final String OUT = "-out"; + Scanner scanner = new Scanner(System.in); String target; - if(args.length > 1 && args[0].equals("-mode")){ - target = args[1]; + String message = null; + String processed = null; + int offset; + int index = -1; + List argsList = Arrays.asList(args); + + /*Mode*/ + index = argsList.indexOf(MODE); + if(index != -1){ + target = args[index+1]; } else{ target = "enc"; } - String message; - int offset; - if(args.length == 6 && args[4].equals("-data")){ - message = args[5]; - offset= Integer.parseInt(args[3]); + /*Input*/ + index = argsList.indexOf(IN); + if(index != -1){ + try { + message = new String(Files.readAllBytes(Paths.get(args[index + 1]))); + } catch (IOException e) { + System.out.println("Not found file " + args[index + 1]); + } + } else{ + index = argsList.indexOf(DATA); + if(index != -1 && message != null){ + message = args[index + 1]; + } else{ + System.out.println("Enter data:"); + message = scanner.nextLine(); + } + } + + /*Key*/ + index = argsList.indexOf(KEY); + if(index != -1){ + offset = Integer.parseInt(args[index+1]); } else{ - message = scanner.nextLine(); + System.out.println("Enter key:"); offset = scanner.nextInt(); + } if(target.equals("enc")){ - System.out.println(enc(message, offset)); + processed = enc(message, offset); } else if(target.equals("dec")){ - System.out.println(dec(message, offset)); + processed = dec(message, offset); + } + + /*Output*/ + index = argsList.indexOf(OUT); + if(index != -1){ + File outputFile = new File(args[index + 1]); + try (FileWriter writer = new FileWriter(outputFile)) { + writer.write(processed); + } catch (IOException e) { + System.out.println("Cannot write output message to file"); + } + } else{ + System.out.println(processed); } + } + public Crypto() { } + public static String enc(String originalStr, int offset){ return offsetAll(originalStr, offset); }