0% found this document useful (0 votes)
51 views8 pages

19it403 Cns Lab Programs Executed

The document describes experiments implementing three cipher techniques: Caesar cipher, Playfair cipher, and Rail Fence cipher. The Caesar cipher program encrypts and decrypts messages by shifting letters by a key value. The Playfair cipher program generates a 5x5 key table from a keyword and encrypts messages by mapping letter pairs to other letter pairs based on their positions in the table. The Rail Fence cipher program encrypts messages by writing them diagonally across rows in a matrix and decrypts by reading the letters off in the opposite pattern.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
51 views8 pages

19it403 Cns Lab Programs Executed

The document describes experiments implementing three cipher techniques: Caesar cipher, Playfair cipher, and Rail Fence cipher. The Caesar cipher program encrypts and decrypts messages by shifting letters by a key value. The Playfair cipher program generates a 5x5 key table from a keyword and encrypts messages by mapping letter pairs to other letter pairs based on their positions in the table. The Rail Fence cipher program encrypts messages by writing them diagonally across rows in a matrix and decrypts by reading the letters off in the opposite pattern.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 8

EXPERIMENT – 1(A)

CEASER CIPHER
#include<stdio.h>
int main()
{
char message[100], ch;
int i, key;
printf("Enter a message to encrypt: ");
gets(message);
printf("Enter key: ");
scanf("%d", &key);
for(i = 0; message[i] != '\0'; ++i){
ch = message[i];
if(ch >= 'a' && ch <= 'z'){
ch = ch + key;
if(ch > 'z'){
ch = ch - 'z' + 'a' - 1;
}
message[i] = ch;
}
else if(ch >= 'A' && ch <= 'Z'){
ch = ch + key;
if(ch > 'Z'){
ch = ch - 'Z' + 'A' - 1;
}
message[i] = ch;
}
}
printf("Encrypted message: %s", message);
for(i = 0; message[i] != '\0'; ++i){
ch = message[i];
if(ch >= 'a' && ch <= 'z'){
ch = ch - key;
if(ch > 'z'){
ch = ch - 'z' + 'a' - 1;
}
message[i] = ch;
}
else if(ch >= 'A' && ch <= 'Z'){
ch = ch - key;
if(ch > 'Z'){
ch = ch - 'Z' + 'A' - 1;
}
message[i] = ch;
}
}
printf("\nDecrypted Message: %s",message);
return 0;
}

EXPERIMENT – 1(B)
PLAY-FAIR CIPHER
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
#define SIZE 30
void toLowerCase(char plain[], int ps)
{
    int i;
    for (i = 0; i < ps; i++) {
        if (plain[i] > 64 && plain[i] < 91)
            plain[i] += 32;
  }
}
int removeSpaces(char* plain, int ps)
{
    int i, count = 0;
    for (i = 0; i < ps; i++)
        if (plain[i] != ' ')
            plain[count++] = plain[i];
    plain[count] = '\0';
    return count;
}
void generateKeyTable(char key[], int ks, char keyT[5][5])
{
    int i, j, k, flag = 0, *dicty;
    dicty = (int*)calloc(26, sizeof(int));
    for (i = 0; i < ks; i++) {
        if (key[i] != 'j')
            dicty[key[i] - 97] = 2;
  }
 
    dicty['j' - 97] = 1;
 
    i = 0;
    j = 0;
 
    for (k = 0; k < ks; k++) {
        if (dicty[key[k] - 97] == 2) {
            dicty[key[k] - 97] -= 1;
            keyT[i][j] = key[k];
            j++;
            if (j == 5) {
                i++;
                j = 0;
      }
    }
  }
 
    for (k = 0; k < 26; k++) {
        if (dicty[k] == 0) {
            keyT[i][j] = (char)(k + 97);
            j++;
            if (j == 5) {
                i++;
                j = 0;
      }
    }
  }
}
void search(char keyT[5][5], char a, char b, int arr[])
{
    int i, j;
 
    if (a == 'j')
        a = 'i';
    else if (b == 'j')
        b = 'i';
 
    for (i = 0; i < 5; i++) {
 
        for (j = 0; j < 5; j++) {
 
            if (keyT[i][j] == a) {
                arr[0] = i;
                arr[1] = j;
      }
            else if (keyT[i][j] == b) {
                arr[2] = i;
                arr[3] = j;
      }
    }
  }
}
 

int mod5(int a) { return (a % 5); }


int prepare(char str[], int ptrs)
{
    if (ptrs % 2 != 0) {
        str[ptrs++] = 'z';
        str[ptrs] = '\0';
  }
    return ptrs;
}
void encrypt(char str[], char keyT[5][5], int ps)
{
    int i, a[4];
 
    for (i = 0; i < ps; i += 2) {
 
        search(keyT, str[i], str[i + 1], a);
 
        if (a[0] == a[2]) {
            str[i] = keyT[a[0]][mod5(a[1] + 1)];
            str[i + 1] = keyT[a[0]][mod5(a[3] + 1)];
    }
        else if (a[1] == a[3]) {
            str[i] = keyT[mod5(a[0] + 1)][a[1]];
            str[i + 1] = keyT[mod5(a[2] + 1)][a[1]];
    }
        else {
            str[i] = keyT[a[0]][a[3]];
            str[i + 1] = keyT[a[2]][a[1]];
    }
  }
}
void encryptByPlayfairCipher(char str[], char key[])
{
    char ps, ks, keyT[5][5];
 
    ks = strlen(key);
    ks = removeSpaces(key, ks);
    toLowerCase(key, ks);
 
    ps = strlen(str);
    toLowerCase(str, ps);
    ps = removeSpaces(str, ps);
 
    ps = prepare(str, ps);
 
    generateKeyTable(key, ks, keyT);
 
    encrypt(str, keyT, ps);
}
int main()
{
    char str[SIZE], key[SIZE];
    strcpy(key, "Monarchy");
    printf("Key text: %s\n", key);
    strcpy(str, "instruments");
    printf("Plain text: %s\n", str);
    encryptByPlayfairCipher(str, key);
 
    printf("Cipher text: %s\n", str);
 
    return 0;
}

EXPERIMENT – 1(C)
RAIL-FENCE CIPHER
#include<stdio.h>
#include<string.h>
 
void encryptMsg(char msg[], int key){
    int msgLen = strlen(msg), i, j, k = -1, row = 0, col = 0;
    char railMatrix[key][msgLen];
 
    for(i = 0; i < key; ++i)
        for(j = 0; j < msgLen; ++j)
            railMatrix[i][j] = '\n';
 
    for(i = 0; i < msgLen; ++i){
        railMatrix[row][col++] = msg[i];
 
        if(row == 0 || row == key-1)
            k= k * (-1);
 
        row = row + k;
    }
 
    printf("\nEncrypted Message: ");
 
    for(i = 0; i < key; ++i)
        for(j = 0; j < msgLen; ++j)
            if(railMatrix[i][j] != '\n')
                printf("%c", railMatrix[i][j]);
}
 
void decryptMsg(char enMsg[], int key){
    int msgLen = strlen(enMsg), i, j, k = -1, row = 0, col = 0, m = 0;
    char railMatrix[key][msgLen];
 
    for(i = 0; i < key; ++i)
        for(j = 0; j < msgLen; ++j)
            railMatrix[i][j] = '\n';
 
    for(i = 0; i < msgLen; ++i){
        railMatrix[row][col++] = '*';
 
        if(row == 0 || row == key-1)
            k= k * (-1);
 
        row = row + k;
    }
 
    for(i = 0; i < key; ++i)
        for(j = 0; j < msgLen; ++j)
            if(railMatrix[i][j] == '*')
                railMatrix[i][j] = enMsg[m++];
 
    row = col = 0;
    k = -1;
 
    printf("\nDecrypted Message: ");
 
    for(i = 0; i < msgLen; ++i){
        printf("%c", railMatrix[row][col++]);
 
        if(row == 0 || row == key-1)
            k= k * (-1);
 
        row = row + k;
    }
}
 
int main(){
    char msg[] = "Hello World";
    char enMsg[] = "Horel ollWd";
    int key = 3;
 
    printf("Original Message: %s", msg);
 
    encryptMsg(msg, key);
    decryptMsg(enMsg, key);
 
    return 0;
}

You might also like