/** * File: krypto.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 == 32) // if c is space { caesar = 32; } 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 == 32) { caesar = 32; // if c is space } 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"); }