Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <time.h>
- #include <stdbool.h>
- void generujSifru(char tabulka[256])
- {
- int i;
- for(i = 0; i <= 255; i++) {
- tabulka[i] = 255 - i;
- }
- }
- void generujNahodnouSifru(char tabulka[256], char desifrovaciTabulka[256])
- {
- time_t t;
- srand((unsigned)time(&t));
- bool mnozina[256];
- int i;
- for(i = 0; i <= 255; i++)
- mnozina[i] = false;
- for(i = 0; i <= 255; i++) {
- int nahodnyZnak = rand() % 256;
- if(mnozina[nahodnyZnak] == true) {
- int j;
- for(j = (nahodnyZnak + 1) % 256; j != nahodnyZnak; j = (j + 1) % 256)
- if(mnozina[j] == false)
- break; // nasli jsme!!!
- nahodnyZnak = j;
- }
- mnozina[nahodnyZnak] = true;
- tabulka[i] = nahodnyZnak;
- desifrovaciTabulka[nahodnyZnak] = i;
- }
- }
- char* sifruj(char retezec[], char tabulka[])
- {
- int i = 0;
- while(retezec[i] != 0) {
- int znak = (unsigned char)retezec[i];
- retezec[i] = tabulka[znak];
- i++;
- }
- return retezec;
- }
- int main(int argc, char** argv)
- {
- char tabulka[256], desifrovaciTabulka[256];
- char vstup[256] = "Ahoj Pavle...";
- /** 1. parametr>
- * -r :cteni klicu ze zadanych souboru
- * -w : generovani a zapis klicu do zadanych souboru
- * 2. a 3. parametr: jmena souboru s klicem
- * Na standardni vstup vlozite soubor
- * Na standardni vystup vypiste (de)sifrovany vysledek
- */
- if(argc > 1) {
- if(argv[1][1] == 'r') {
- // cteni
- puts("cteni");
- }
- else if(argv[1][1] == 'w') {
- puts("zapis");
- }
- //nezapomente na konci zavrit soubory pomoci
- // fclose(soubor);
- }
- printf("Sifrujeme retezec: '%s'\n", vstup);
- generujNahodnouSifru(tabulka, desifrovaciTabulka);
- printf("Sifruj=%s\n", sifruj(vstup, tabulka));
- printf("Desifruj=%s\n", sifruj(vstup, desifrovaciTabulka));
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement