Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Can i get this code converted from C to Python? Its a playfair cipher code // C program to implement Playfair Cipher #include #include #include

Can i get this code converted from C to Python?

Its a playfair cipher code

// C program to implement Playfair Cipher

#include

#include

#include

#define SIZE 30

// Function to convert the string to lowercase

void toLowerCase(char plain[], int ps)

{

int i;

for (i = 0; i

if (plain[i] > 64 && plain[i]

plain[i] += 32;

}

}

// Function to remove all spaces in a string

int removeSpaces(char* plain, int ps)

{

int i, count = 0;

for (i = 0; i

if (plain[i] != ' ')

plain[count++] = plain[i];

plain[count] = '\0';

return count;

}

// Function to generate the 5x5 key square

void generateKeyTable(char key[], int ks, char keyT[5][5])

{

int i, j, k, flag = 0, *dicty;

// a 26 character hashmap

// to store count of the alphabet

dicty = (int*)calloc(26, sizeof(int));

for (i = 0; i

if (key[i] != 'j')

dicty[key[i] - 97] = 2;

}

dicty['j' - 97] = 1;

i = 0;

j = 0;

for (k = 0; 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

if (dicty[k] == 0) {

keyT[i][j] = (char)(k + 97);

j++;

if (j == 5) {

i++;

j = 0;

}

}

}

}

// Function to search for the characters of a digraph

// in the key square and return their position

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

for (j = 0; j

if (keyT[i][j] == a) {

arr[0] = i;

arr[1] = j;

}

else if (keyT[i][j] == b) {

arr[2] = i;

arr[3] = j;

}

}

}

}

// Function to find the modulus with 5

int mod5(int a)

{

return (a % 5);

}

// Function to make the plain text length to be even

int prepare(char str[], int ptrs)

{

if (ptrs % 2 != 0) {

str[ptrs++] = 'z';

str[ptrs] = '\0';

}

return ptrs;

}

// Function for performing the encryption

void encrypt(char str[], char keyT[5][5], int ps)

{

int i, a[4];

for (i = 0; i

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]];

}

}

}

// Function to encrypt using Playfair Cipher

void encryptByPlayfairCipher(char str[], char key[])

{

char ps, ks, keyT[5][5];

// Key

ks = strlen(key);

ks = removeSpaces(key, ks);

toLowerCase(key, ks);

// Plaintext

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];

// Key to be encrypted

strcpy(key, "Monarchy");

printf("Key text: %s ", key);

// Plaintext to be encrypted

strcpy(str, "instruments");

printf("Plain text: %s ", str);

// encrypt using Playfair Cipher

encryptByPlayfairCipher(str, key);

printf("Cipher text: %s ", str);

return 0;

}

// This code

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

App Inventor

Authors: David Wolber, Hal Abelson

1st Edition

1449397484, 9781449397487

More Books

Students also viewed these Programming questions

Question

Provide a brief description of the JDBC URL.

Answered: 1 week ago

Question

What is management growth? What are its factors

Answered: 1 week ago