0% found this document useful (0 votes)
91 views

Worksheet 1.3

This document summarizes an experiment on implementing the Hill Cipher encryption algorithm. The student provides their name, student ID, program details and date. They explain that Hill Cipher uses matrix calculations to encrypt and decrypt data. Their code takes a key matrix and message from the user, encrypts the message by multiplying the matrices, decrypts by multiplying the encrypted message by the inverse key matrix. The output displays the encrypted and decrypted messages along with the inverse key matrix. Learning outcomes include understanding encryption/decryption and implementing Hill Cipher.

Uploaded by

Jonny Ash
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
91 views

Worksheet 1.3

This document summarizes an experiment on implementing the Hill Cipher encryption algorithm. The student provides their name, student ID, program details and date. They explain that Hill Cipher uses matrix calculations to encrypt and decrypt data. Their code takes a key matrix and message from the user, encrypts the message by multiplying the matrices, decrypts by multiplying the encrypted message by the inverse key matrix. The output displays the encrypted and decrypted messages along with the inverse key matrix. Learning outcomes include understanding encryption/decryption and implementing Hill Cipher.

Uploaded by

Jonny Ash
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 7

Experiment No.

: 3

Student Name: Sahil Mallick UID: 19BCS1073


Branch: BE-CSE Section/Group: NTPP-IS 1A
Semester: 6th Date of Performance: 22/02/2022
Subject Name: Information Security Lab Subject Code: CSB-372

1. Aim: Perform the practical of Hill Cipher.

2. Algorithm/Flowchart:

Hill cipher is a polygraphic substitution cipher based on Linear Algebra. It was invented by
Lester S. Hill in the year 1929. In simple words, it is a cryptography algorithm used to encrypt
and decrypt data for the purpose of data security.

The algorithm uses matrix calculations used in Linear Algebra. It is easier to understand if we
have the basic knowledge of matrix multiplication, modulo calculation, and the inverse
calculation of matrices.

Encryption: The given message string and key string is represented in the form of matrix. Then
key and message matrix are multiplied. Finally modulo 26 is taken for each element of matrix
obtained by multiplication. The key matrix that we take here should be invertible, otherwise
decryption will not be possible.

Decryption: The encrypted message matrix is multiplied by the inverse of key matrix and
finally its modulo 26 is taken to get the original message
3. Code:

#include<iostream>
#include<math.h>

using namespace std;

float encrypt[3][1], decrypt[3][1], a[3][3], b[3][3], mes[3][1],


c[3][3];

void encryption(); //encrypts the message


void decryption(); //decrypts the message
void getKeyMessage(); //gets key and message from user
void inverse(); //finds inverse of key matrix

int main() {
getKeyMessage();
encryption();
decryption();
return 0;
}

void encryption() {
int i, j, k;
for(i = 0; i < 3; i++)
for(j = 0; j < 1; j++)
for(k = 0; k < 3; k++)
encrypt[i][j] = encrypt[i][j] + a[i][k] * mes[k][j];
cout<<"\nEncrypted string is: ";
for(i = 0; i < 3; i++)
cout<<(char)(fmod(encrypt[i][0], 26) + 97);
}

void decryption() {
int i, j, k;
inverse();
for(i = 0; i < 3; i++)
for(j = 0; j < 1; j++)
for(k = 0; k < 3; k++)
decrypt[i][j] = decrypt[i][j] + b[i][k] * encrypt[k][j];
cout<<"\nDecrypted string is: ";
for(i = 0; i < 3; i++)
cout<<(char)(fmod(decrypt[i][0], 26) + 97);
cout<<"\n";
}

void getKeyMessage() {
int i, j;
char msg[3];
cout<<"Enter 3x3 inversible matrix:\n";
for(i = 0; i < 3; i++)
for(j = 0; j < 3; j++) {
cin>>a[i][j];
c[i][j] = a[i][j];
}
cout<<"\nEnter a 3 letter string: ";
cin>>msg;
for(i = 0; i < 3; i++)
mes[i][0] = msg[i] - 97;
}

void inverse() {
int i, j, k;
float p, q;
for(i = 0; i < 3; i++)
for(j = 0; j < 3; j++) {
if(i == j)
b[i][j]=1;
else
b[i][j]=0;
}
for(k = 0; k < 3; k++) {
for(i = 0; i < 3; i++) {
p = c[i][k];
q = c[k][k];
for(j = 0; j < 3; j++) {
if(i != k) {
c[i][j] = c[i][j]*q - p*c[k][j];
b[i][j] = b[i][j]*q - p*b[k][j];
}
}
}
}
for(i = 0; i < 3; i++)
for(j = 0; j < 3; j++)
b[i][j] = b[i][j] / c[i][i];
cout<<"\n\nInverse Matrix is:\n";
for(i = 0; i < 3; i++) {
for(j = 0; j < 3; j++)
cout<<b[i][j]<<" ";
cout<<"\n";
}
}

Code Snipett:
4. Output:

Learning outcomes:

1. Learnt about encryption and decryption.

2. Learnt about Hill Cipher.

3. Learnt how to implement the program for Hill Cipher.

You might also like