Consider any 6x6 matrix (only alphabets) and develop as well as demonstrate an algorithm and code to show the length of the string should be equal to 6

Database System Concepts
7th Edition
ISBN:9780078022159
Author:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Chapter1: Introduction
Section: Chapter Questions
Problem 1PE
icon
Related questions
Question
100%
Consider any 6x6 matrix (only alphabets) and develop as well as demonstrate an algorithm and code to show the length of the string should be equal to 6
Expert Solution
Step 1

// C program

#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);
}

// Driver code
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;
}

steps

Step by step

Solved in 2 steps

Blurred answer
Similar questions
Recommended textbooks for you
Database System Concepts
Database System Concepts
Computer Science
ISBN:
9780078022159
Author:
Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:
McGraw-Hill Education
Starting Out with Python (4th Edition)
Starting Out with Python (4th Edition)
Computer Science
ISBN:
9780134444321
Author:
Tony Gaddis
Publisher:
PEARSON
Digital Fundamentals (11th Edition)
Digital Fundamentals (11th Edition)
Computer Science
ISBN:
9780132737968
Author:
Thomas L. Floyd
Publisher:
PEARSON
C How to Program (8th Edition)
C How to Program (8th Edition)
Computer Science
ISBN:
9780133976892
Author:
Paul J. Deitel, Harvey Deitel
Publisher:
PEARSON
Database Systems: Design, Implementation, & Manag…
Database Systems: Design, Implementation, & Manag…
Computer Science
ISBN:
9781337627900
Author:
Carlos Coronel, Steven Morris
Publisher:
Cengage Learning
Programmable Logic Controllers
Programmable Logic Controllers
Computer Science
ISBN:
9780073373843
Author:
Frank D. Petruzella
Publisher:
McGraw-Hill Education