diff --git a/week1/krypto.c b/week1/krypto.c new file mode 100644 index 0000000..5de78ef --- /dev/null +++ b/week1/krypto.c @@ -0,0 +1,161 @@ +/** + * File: krypto2.c + * Author: Rainer Liis + * Created: 29.01.2018 + * Last edit: 31.01.2018 + * + * Descrption: Encryption and decryption of text using caesar cipher. + * Input from text file and output to a text file. + * Encryption counts up, decryption counts down. + */ + +#include <stdio.h> + +void encrypt (); +void decrypt (); + +int main (void) +{ + char valik; + + printf ("Do you wish to encrypt or decrypt?\n"); + + // user enters choice + + do + { + printf ("Please enter a valid option(e/d):"); + scanf ("%c", &valik); + } + while (valik != 'e' && valik != 'd'); + + //depending on the choice, a function is started + + if (valik == 'e') + { + encrypt (); + } + else if (valik == 'd') + { + decrypt (); + } + else + { + printf ("option does not exist"); // if input is not one of + } // the choices + + return 0; +} + +void encrypt () +{ + char ni[80] = "sisend.txt", no[80] = "tul.txt"; + char c; + int key; + int caesar; + + FILE *fi, *fo; + fi = fopen (ni, "r"); + fo = fopen (no, "w"); + + printf ("Enter the encryption key to encrypt: "); + scanf ("%d", &key); + + key = key % 26; // in case the key is too large + + do + { + c = fgetc(fi); + + if (feof(fi)) // loop breaks when fgetc reaches end of file + { + break; + } + + if (c >= 65 && c <= 90) // if char is uppercase + { + if ((c + key) > 90) + { + caesar = c - (26 - key); + } + else + { + caesar = (int)c + key; + } + } + else if (c >= 97 && c <= 122) // if char is lowercase + { + if ((c + key) > 122) + { + caesar = c - (26 - key); + } + else + { + caesar = (int)c + key; + } + } + + printf ("%c", caesar); + fprintf (fo, "%c", caesar); + } + while (1); + + printf (" \n"); +} + +void decrypt () +{ + char ni[80] = "sisend.txt", no[80] = "tul.txt"; + char c; + int key; + int caesar; + + FILE *fi, *fo; + fi = fopen (ni, "r"); + fo = fopen (no, "w"); + + printf("Enter the encryption key to decrypt: "); + scanf ("%d", &key); + + key = key % 26; // in case the key is too large + + do + { + c = fgetc(fi); + + if (feof(fi)) // loop breaks when fgetc reaches end of file + { + break; + } + + if (c >= 65 && c <= 90) // if char is uppercase + { + if ((c - key) < 65) + { + caesar = c + (26 - key); + } + else + { + caesar = (int)c - key; + } + } + else if (c >= 97 && c <= 122) // if char is lowercase + { + if ((c - key) < 97) + { + caesar = c + (26 - key); + } + else + { + caesar = (int)c - key; + } + } + + printf ("%c", caesar); + fprintf (fo, "%c", caesar); + } + while (1); + + printf (" \n"); +} +