Advertisement
Guest User

Untitled

a guest
Mar 24th, 2019
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.07 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement