JAVA 7.
package com.javarush.test.level18.lesson10.bonus01; /* Шифровка Придумать механизм шифровки/дешифровки Программа запускается с одним из следующих наборов параметров: -e fileName fileOutputName -d fileName fileOutputName где fileName - имя файла, который необходимо зашифровать/расшифровать fileOutputName - имя файла, куда необходимо записать результат шифрования/дешифрования -e - ключ указывает, что необходимо зашифровать данные -d - ключ указывает, что необходимо расшифровать данные */ import java.io.*; import java.util.*; public class Solution { public static void main(String[] args) throws IOException { FileInputStream inputStream = new FileInputStream(args[1]); ArrayList<Integer> bytes = new ArrayList<>(); while (inputStream.available() > 0) { bytes.add(inputStream.read()); } ArrayList<Integer> output = new ArrayList<>(); if (args[0].equals("-e")) output = encrypt(bytes); else if (args[0].equals("-d")) output = decrypt(bytes); FileOutputStream outputStream = new FileOutputStream(args[2]); for (Integer integer : output) { outputStream.write(integer); } inputStream.close(); outputStream.close(); } private static ArrayList<Integer> encrypt(ArrayList<Integer> bytes) { ArrayList<Integer> list = new ArrayList<>(); for (Integer aByte : bytes) { list.add(aByte + 3); } return list; } private static ArrayList<Integer> decrypt(ArrayList<Integer> bytes) { ArrayList<Integer> list = new ArrayList<>(); for (Integer aByte : bytes) { list.add(aByte - 3); } return list; } }
JAVA 8 С ЛЯМБДАМИ.
package com.javarush.test.level18.lesson10.bonus01; /* Шифровка Придумать механизм шифровки/дешифровки Программа запускается с одним из следующих наборов параметров: -e fileName fileOutputName -d fileName fileOutputName где fileName - имя файла, который необходимо зашифровать/расшифровать fileOutputName - имя файла, куда необходимо записать результат шифрования/дешифрования -e - ключ указывает, что необходимо зашифровать данные -d - ключ указывает, что необходимо расшифровать данные */ import java.io.*; import java.util.*; import java.util.stream.Collectors; public class Solution { public static void main(String[] args) throws IOException { FileInputStream inputStream = new FileInputStream(args[1]); ArrayList<Integer> bytes = new ArrayList<>(); while (inputStream.available() > 0) { bytes.add(inputStream.read()); } ArrayList<Integer> output = new ArrayList<>(); if (args[0].equals("-e")) output = encrypt(bytes); else if (args[0].equals("-d")) output = decrypt(bytes); FileOutputStream outputStream = new FileOutputStream(args[2]); for (Integer integer : output) { outputStream.write(integer); } inputStream.close(); outputStream.close(); } private static ArrayList<Integer> encrypt(ArrayList<Integer> bytes) { return bytes.stream().map(aByte -> aByte + 3).collect(Collectors.toCollection(ArrayList::new)); } private static ArrayList<Integer> decrypt(ArrayList<Integer> bytes) { return bytes.stream().map(aByte -> aByte - 3).collect(Collectors.toCollection(ArrayList::new)); } }
НЕВЕРНОЕ РЕШЕНИЕ ЧЕРЕЗ ШИФРОВКУ СИМВОЛОВ. В ЭТОМ РЕШЕНИИ НЕ УДАЁТСЯ ПЕРЕДАТЬ ОТСТУПЫ.
package com.javarush.test.level18.lesson10.bonus01; /* Шифровка Придумать механизм шифровки/дешифровки Программа запускается с одним из следующих наборов параметров: -e fileName fileOutputName -d fileName fileOutputName где fileName - имя файла, который необходимо зашифровать/расшифровать fileOutputName - имя файла, куда необходимо записать результат шифрования/дешифрования -e - ключ указывает, что необходимо зашифровать данные -d - ключ указывает, что необходимо расшифровать данные */ import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Paths; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; public class Solution { public static void main(String[] args) throws IOException { List<String> lines = Files.readAllLines(Paths.get(args[1]), StandardCharsets.UTF_8); StringBuilder builder = new StringBuilder(); //lines.forEach(builder::append); //java 8 for (String line : lines) { builder.append(line); } char[] chars = builder.toString().toCharArray(); //debug for (char aChar : chars) { System.out.print(aChar); } System.out.println(); System.out.println("========== Encrypted: "); // HashMap key = GetKey.reseiveKey(); if (args[0].equals("-e")) encrypt(chars, key); else if (args[0].equals("-d")) decrypt(chars, key); StringBuilder stringBuilder = new StringBuilder(); for (char aChar : chars) { String a = Character.toString(aChar); stringBuilder.append(a); } String output = stringBuilder.toString(); //debug System.out.println(output); // writeUsingFileWriter(output, args[2]); } private static void writeUsingFileWriter(String data, String outputPath) { OutputStream os = null; try { os = new FileOutputStream(new File(outputPath)); os.write(data.getBytes(), 0, data.length()); } catch (IOException e) { e.printStackTrace(); }finally{ try { os.close(); } catch (IOException e) { e.printStackTrace(); } } } private static void decrypt(char[] chars, HashMap map) { for (int i = 0; i < chars.length; i++) { Iterator<Map.Entry<Character, Character>> iterator = map.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry<Character, Character> pair = iterator.next(); char key = pair.getKey(); char value = pair.getValue(); if (chars[i] == value) { chars[i] = key; break; } } } } private static void encrypt(char[] chars, HashMap map) { for (int i = 0; i < chars.length; i++) { Iterator<Map.Entry<Character, Character>> iterator = map.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry<Character, Character> pair = iterator.next(); char key = pair.getKey(); char value = pair.getValue(); if (chars[i] == key) { chars[i] = value; break; } } } } }
package com.javarush.test.level18.lesson10.bonus01; import java.util.HashMap; /** * Created by promoscow on 22.10.16. */ public class GetKey { public static HashMap<Character, Character> reseiveKey() { HashMap<Character, Character> map = new HashMap<>(); map.put('a', 'q'); map.put('b', 'w'); map.put('c', 'e'); map.put('d', 'r'); map.put('e', 't'); map.put('f', 'y'); map.put('g', 'u'); map.put('h', 'i'); map.put('i', 'o'); map.put('j', 'p'); map.put('k', 'z'); map.put('l', 'x'); map.put('m', 'c'); map.put('n', 'v'); map.put('o', 'b'); map.put('p', 'n'); map.put('q', 'm'); map.put('r', 'a'); map.put('s', 's'); map.put('t', 'd'); map.put('u', 'f'); map.put('v', 'g'); map.put('w', 'h'); map.put('x', 'j'); map.put('y', 'k'); map.put('z', 'l'); map.put('A', 'Q'); map.put('B', 'W'); map.put('C', 'E'); map.put('D', 'R'); map.put('E', 'T'); map.put('F', 'Y'); map.put('G', 'U'); map.put('H', 'I'); map.put('I', 'O'); map.put('J', 'P'); map.put('K', 'Z'); map.put('L', 'X'); map.put('M', 'C'); map.put('N', 'V'); map.put('O', 'B'); map.put('P', 'N'); map.put('Q', 'M'); map.put('R', 'A'); map.put('S', 'S'); map.put('T', 'D'); map.put('U', 'F'); map.put('V', 'G'); map.put('W', 'H'); map.put('X', 'J'); map.put('Y', 'K'); map.put('Z', 'L'); return map; } }
Leave A Comment