Advertisement
hugol

Untitled

Jan 9th, 2015
195
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.49 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. char translacja(char* tablica, int pozycja_bebenka, char znak)
  4. {
  5. znak -= 'A';
  6. pozycja_bebenka += znak;
  7. pozycja_bebenka %= 26;
  8. return tablica[pozycja_bebenka];
  9. };
  10.  
  11. char translacja_odwrotna(char* tablica, int pozycja_bebenka, char znak)
  12. {
  13. for(int i=0; i<26; i++)
  14. {
  15. if (tablica[(pozycja_bebenka+i)%26] == znak)
  16. return i + 'A';
  17. }
  18. return -1;
  19. };
  20.  
  21.  
  22. int main()
  23. {
  24. char* tablica1 = "EKMFLGDQVZNTOWYHXUSPAIBRCJ";
  25. char* tablica2 = "AJDKSIRUXBLHWTMCQGZNPYFVOE";
  26. char* tablica3 = "YRUHQSLDPXNGOKMIEBFZCWVJAT";
  27.  
  28. FILE* plik_zrodlowy = fopen("a.txt", "r");
  29. FILE* plik_docelowy = fopen("aszyfreed.txt", "w");
  30.  
  31. //sprawdzic czy pliki udalo sie otworzyc (=!NULL)
  32.  
  33. // poz_bebenka_1 + pozbebenka_2*26 = klucz
  34. int pozycja_bebenka_1 = 0, pozycja_bebenka_2 = 0;
  35.  
  36. char znak;
  37. while(fread(&znak, 1, 1, plik_zrodlowy))
  38. {
  39. znak = toupper(znak);
  40. if (znak <= 'Z' && znak >= 'A')
  41. {
  42. znak = translacja(tablica1, pozycja_bebenka_1, znak);
  43. znak = translacja(tablica2, pozycja_bebenka_2, znak);
  44. znak = translacja(tablica3, 0, znak);
  45. znak = translacja_odwrotna(tablica2, pozycja_bebenka_2, znak);
  46. znak = translacja_odwrotna(tablica1, pozycja_bebenka_1, znak);
  47.  
  48. pozycja_bebenka_1++;
  49. if (pozycja_bebenka_1 == 26)
  50. {
  51. pozycja_bebenka_2 = (pozycja_bebenka_2+1)%26;
  52. pozycja_bebenka_1 = 0;
  53. }
  54. }
  55. //printf("%c", znak);
  56. fwrite(&znak, 1, 1, plik_docelowy);
  57. }
  58.  
  59. fclose(plik_zrodlowy);
  60. fclose(plik_docelowy);
  61. return 0;
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement