daily pastebin goal
70%
SHARE
TWEET

Untitled

a guest Mar 24th, 2019 43 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package ps2;
  2.  
  3. import java.io.FileNotFoundException;
  4. import java.io.FileOutputStream;
  5. import java.io.IOException;
  6. import java.io.OutputStream;
  7. import java.nio.file.Files;
  8. import java.nio.file.Paths;
  9. import java.util.ArrayList;
  10. import java.util.Arrays;
  11. import java.util.Scanner;
  12.  
  13. public class zad2 {
  14.  
  15.     public static void main(String[] args) throws FileNotFoundException {
  16.         // TODO Auto-generated method stub
  17.  
  18.         System.out.println("Podaj wielomian");
  19.         String s1 = new Scanner(System.in).nextLine();
  20.         System.out.println("Podaj ziarno");
  21.         String s2 = new Scanner(System.in).nextLine();
  22.         System.out.println("Podaj kod");
  23.         char[] kod = new Scanner(System.in).nextLine().toCharArray();
  24.  
  25.         int size = s1.length();
  26.  
  27.         ArrayList<Integer> bit = new ArrayList<>();
  28.  
  29.         int wielomian = Integer.parseInt(s1, 2);
  30.         int seed = Integer.parseInt(s2, 2);
  31.  
  32.         ArrayList<Integer> one_position = new ArrayList<>(); // pozycje jedynek w wielomianie
  33.         for (int a = 0; a < size; a++)
  34.             if (((wielomian >> a) & 1) == 1)
  35.                 one_position.add(a);
  36.  
  37.         for (int a = 0; a < kod.length; a++) {
  38.  
  39.             int liczba = seed >> 1; // przesuwamy liczbe
  40.             int wynik = (seed >> one_position.get(0)) & 1; // wynik rowna sie wartosci seeda w pierwszej pozycji wielomianu
  41.  
  42.             for (int b = 1; b < one_position.size(); b++)
  43.                 wynik = ((seed >> one_position.get(b)) & 1) ^ wynik; // wynik rowna sie kolejnymi xorami seeda w pozycji wielomianu
  44.  
  45.             if (wynik == 1)
  46.                 liczba = liczba | (1 << size - 1);   // jezeli wynik = 1 to dodajemy do liczby na poczatku jedynke
  47.             else
  48.                 liczba = liczba & ~(1 << size - 1); //jezeli inaczej to dodajemy zero
  49.  
  50.             seed = liczba;  // seed staje sie powstała liczba
  51.  
  52.             bit.add((seed >> size - 1) & 1);   //do listy bit dodajemy najstarsza wartosc seeda
  53.  
  54.         }
  55.  
  56.         for (int a = 0; a < kod.length; a++) {
  57.  
  58.             int liczba = (int) kod[a];
  59.  
  60.             liczba = liczba ^ bit.get(a);   // kod xorujemy po kolei z lista bit i tak powstaje zaszyfrowany kod
  61.             kod[a] = (char) liczba;
  62.  
  63.         }
  64.  
  65.         StringBuilder a = new StringBuilder().append(kod);
  66.  
  67.         System.out.println(a);
  68.  
  69.     }
  70.  
  71. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top