Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package zaschita1;
- import java.io.File;
- import java.util.Scanner;
- import java.io.FileWriter;
- import java.nio.charset.StandardCharsets;
- import java.nio.file.Files;
- import java.nio.file.Paths;
- import java.util.List;
- public class Zaschita1 {
- public static void encoding() throws Exception{ // ok
- System.out.print("Encoding: \n");
- Scanner sc = new Scanner(new File("src//zaschita1//input_word.txt"));
- String word = sc.nextLine();
- System.out.println("Phrase: " + word);
- String[] binAscii = new String[word.length()];
- for (int i = 0; i < binAscii.length; i++ ){
- binAscii[i] = String.format("%16s", Integer.toBinaryString((int) word.charAt(i))).replace(' ', '0');
- System.out.println(word.charAt(i) + " " + (int) word.charAt(i) + " " + binAscii[i]);
- }
- StringBuilder binAsciiConcat = new StringBuilder();//add
- int binAcounter = 0;// add суммарно сколько в слове бит
- for(int i = 0; i < binAscii.length; i ++){//add
- binAsciiConcat.append(binAscii[i]);//add
- }
- List<String> lines = Files.readAllLines(Paths.get("src//zaschita1//input_text.txt"), StandardCharsets.UTF_8);
- FileWriter writer = new FileWriter("src//zaschita1//output.txt", false);
- System.out.println("lines size: " + lines.size() + " binAsciiConcat: " + binAsciiConcat.toString());
- int positionSpace;
- StringBuilder substringText = new StringBuilder();
- for(int i = 0; i < lines.size(); i ++){//lines.size(); i ++){
- substringText.append(lines.get(i));
- System.out.println('\n' + "lines: " + i + ": " + substringText.toString());
- while(substringText.indexOf(" ") != -1 && (binAcounter != binAsciiConcat.toString().length())){
- positionSpace = substringText.indexOf(" ");
- System.out.println("index пробела: " + positionSpace);
- writer.append(substringText.substring(0, positionSpace + 1));
- if(binAsciiConcat.toString().charAt(binAcounter) == '1'){
- writer.append(" ");
- }
- binAcounter++;
- substringText.delete(0, positionSpace + 1);
- System.out.println("обрезали:" + substringText.toString());
- }
- if(binAcounter == binAsciiConcat.toString().length()){
- writer.append('\u200B');
- }
- writer.append(substringText.toString() + '\n'); //добавляем хвостик
- substringText.delete(0, substringText.toString().length()); //удаляем хвостик
- }
- writer.flush();
- }
- public static void decoding() throws Exception{
- System.out.println("\nDecoding: ");
- List<String> lines = Files.readAllLines(Paths.get("src//zaschita1//output.txt"), StandardCharsets.UTF_8);
- StringBuilder sb = new StringBuilder();
- for(String line: lines){
- sb.append(line);
- }
- int indexU200B = sb.toString().indexOf('\u200B');
- int sbLength = sb.toString().length();
- sb.delete(indexU200B, sbLength);
- System.out.println("sb: " + sb.toString());
- FileWriter writerOutput = new FileWriter("src//zaschita1//output_word.txt", false);
- writerOutput.write(sb.toString());
- writerOutput.flush();
- /*
- sb.delete(sb.toString().indexOf('\u200B'), sb.toString().length());
- int start = 0, end = 16;
- int[] asciiCode = new int[sb.toString().length() / 16];
- StringBuilder res = new StringBuilder();
- for (int i = 0; i < asciiCode.length; i++ ){
- asciiCode[i] = (char)Integer.parseInt(sb.toString().substring(start, end), 2);
- start += 16;
- end += 16;
- System.out.println("ascii: " + asciiCode[i]);
- res.insert(res.length(), (char)asciiCode[i]);
- //System.out.println("char: " + res.toString());
- }
- FileWriter writerOutput = new FileWriter("src//zaschita1//output_word.txt", false);
- writerOutput.write(res.toString());
- writerOutput.flush();
- */
- }
- public static void main(String[] args) throws Exception{
- encoding();
- decoding();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement