Is Lab Manual Final
Is Lab Manual Final
Information Security
(3164603)
CERTIFICATE
Tutorial work for the subject Information Security (3164603) for the
Place:
Date:
Experiment No: 1
Algorithm:
STEP-1: Read the plain text from the user.
STEP-2: Read the key value from the user.
STEP-3: If the key is positive then encrypt the text by adding the key with each
character in the plain text.
STEP-4: Else subtract the key from the plain text.
STEP-5: Display the cipher text obtained above.
Program:
def encrypt(plain_txt, key):
cipher_txt = ""
for i in range(len(plain_txt)):
char = plain_txt[i]
if char.isupper():
cipher_txt += chr((ord(char) + key - 65) % 26 + 65)
elif char.islower():
cipher_txt += chr((ord(char) + key - 97) % 26 + 97)
else:
INFORMATION SECURITY (3164603) 230173146008
cipher_txt += char
return cipher_txt
for i in range(len(cipher_txt)):
char = cipher_txt[i]
if char.isupper():
plain_txt += chr((ord(char) - key - 65) % 26 + 65)
elif char.islower():
plain_txt += chr((ord(char) - key - 97) % 26 + 97)
else:
plain_txt += char
return plain_txt
Output:
INFORMATION SECURITY (3164603) 230173146008
Conclusion: The Caesar cipher is a simple substitution cipher where each letter in the plaintext is
shifted a certain number of places down the alphabet. The number of positions shifted is the "key" of
the cipher. This method is named after Julius Caesar, who used it to encrypt his messages.
Quiz:
Suggested Reference:
1. https://www.geeksforgeeks.org/caesar-cipher-in-cryptography/
Rubrics 1 2 3 4 5 Total
Marks
INFORMATION SECURITY (3164603) 230173146008
Experiment No: 2
If the letters are not on the same row or column, replace them with the letters on the same row
respectively but at the other pair of corners of the rectangle defined by the original pair.
Example:
Algorithm:
STEP-1: Read the plain text from the user.
STEP-2: Read the keyword from the user.
STEP-3: Arrange the keyword without duplicates in a 5*5 matrix in the row order and fill
the remaining cells with missed out letters in alphabetical order. Note that ‘i’
INFORMATION SECURITY (3164603) 230173146008
def prepare_key(key):
"""Prepares the key by removing duplicates and non-alphabetic characters """
key = key.upper()
key = "".join(dict.fromkeys(key)) # Remove duplicates while preserving order
if 'J' in key:
key = key.replace('J', 'I') # I and J are treated as the same
return key
def create_matrix(key):
"""Creates the 5x5 Playfair matrix from the key."""
matrix = list(key)
alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" # I/J combined
def process_text(text):
"""Prepares the plaintext for encryption/decryption."""
text = "".join(c.upper() for c in text if c.isalpha())
text = text.replace('J', 'I')
# text = sub(r"(.)\1", r"\1X\1", text) # Add 'X' between double letters
if len(text) % 2 != 0:
text += 'X' # Pad with 'X' if odd length
return text
result = ""
for i in range(0, len(text), 2):
a = text[i]
b = text[i+1]
if mode == 'enc':
c, d = encrypt_pair(matrix, a, b)
elif mode == 'dec':
c, d = decrypt_pair(matrix, a, b)
else:
raise ValueError("Invalid mode. Choose 'enc' or 'dec'")
result += c + d
return result
Output:
INFORMATION SECURITY (3164603) 230173146008
Conclusion: The Playfair cipher is a manual symmetric encryption technique that uses a 5x5 grid of
letters to substitute pairs of letters in the plaintext with different pairs of letters. It was invented by
Charles Wheatstone in 1854 and is considered one of the first digraph substitution ciphers, making it
more secure than simple substitution ciphers.
Quiz:
Suggested Reference:
1.https://www.geeksforgeeks.org/playfair-cipher-with-examples/
Rubrics 1 2 3 4 5 Total
Marks
INFORMATION SECURITY (3164603) 230173146008
Experiment No: 2
Algorithm:
STEP-1: Read the plain text and key from the user.
STEP-2: Split the plain text into groups of length three.
STEP-3: Arrange the key word in a 3*3 matrix.
STEP-4: Multiply the two matrices to obtain the cipher text of length three.
STEP-5: Combine all these groups to get the complete cipher text.
Program:
import numpy as np
if k < len(key):
kmat[i][j] = ord(key[k]) % 65
k += 1
else:
kmat[i][j] = ord(kmat[i][j]) % 65
return kmat
if len(plaintext) % key_dim != 0:
plaintext += 'X' * (key_dim - (len(plaintext) % key_dim))
# print(f"Error: Plaintext length must be a multiple of {key_dim}.")
# return None
ciphertext = ""
for i in range(0, len(plaintext), key_dim):
block = [ord(char) - 65 for char in plaintext[i:i + key_dim]] # Convert to numerical values (0-25)
block_matrix = np.array(block).reshape(key_dim, 1) # Reshape into a column vector
for j in range(key_dim):
ciphertext += chr(int(encrypted_block[j, 0]) + 65) # Convert back to characters
return ciphertext
if det_inv == -1:
print("Error: Key matrix is not invertible (mod 26).")
return None
plaintext = ""
for i in range(0, len(ciphertext), key_dim):
block = [ord(char) - 65 for char in ciphertext[i:i + key_dim]]
block_matrix = np.array(block).reshape(key_dim, 1)
for j in range(key_dim):
plaintext += chr(int(decrypted_block[j, 0]) + 65)
return plaintext
# Driver Code
key_str = input("Enter the key: ").upper()
INFORMATION SECURITY (3164603) 230173146008
plaintext = input("Enter the Plain text: ").upper() # meet meat the usual place
key_matrix = keyMat(key_str, n)
print("The Key matrix:\n", key_matrix)
Output:
Conclusion: The Hill cipher is a polygraphic substitution cipher that uses matrix multiplication to
encrypt and decrypt messages, based on a key matrix chosen by the user. It is a block cipher that
operates on groups of letters, making it more secure than simple substitution ciphers but vulnerable
to frequency analysis and known-plaintext attacks.
Quiz:
1. What preliminary knowledge required for Hill cipher ?
To understand the Hill cipher, you should have preliminary knowledge of:
Matrix algebra (addition, multiplication, and inverse)
Modular arithmetic (operations with remainders)
Basic cryptography concepts (substitution, encryption, decryption)
Suggested Reference:
1. https://crypto.interactive-maths.com/hill-cipher.html
References used by the students:
https://crypto.interactive-maths.com/hill-cipher.html
Rubrics 1 2 3 4 5 Total
Marks
Experiment No: 3
Example:
INFORMATION SECURITY (3164603) 230173146008
Algorithm:
Program:
def generate_key(msg, key):
if len(msg) == len(key):
return key
else:
key = key * (len(msg) // len(key))
key += key[:len(msg) % len(key)]
return key
Output:
Conclusion: The Vigenère cipher is a polyalphabetic substitution cipher that uses a keyword to
encrypt and decrypt messages by shifting each letter by a corresponding letter in the keyword. This
cipher is considered more secure than monoalphabetic ciphers, such as the Caesar cipher, due to its
use of a keyword to create a unique substitution for each letter.
Quiz:
1. Encryption in Vigenere cipher is done using _____________?
A. Encryption in the Vigenère cipher is done using a polyalphabetic substitution method, where each
letter of the plaintext is shifted by a corresponding letter of the keyword. The shift is determined by
the alphabetical position of the keyword letter, with A=0, B=1, C=2, and so on.
Suggested Reference:
1. https://intellipaat.com/blog/vigenere-cipher/
References used by the students:
https://intellipaat.com/blog/vigenere-cipher/
geeksforgeeks/vigenere-cipher
Rubrics 1 2 3 4 5 Total
Marks
Experiment No: 3
Algorithm:
STEP-1: Read the Plain text.
STEP-2: Arrange the plain text in row column matrix format.
STEP-3: Now read the keyword depending on the number of columns of the plain text.
STEP-4: Arrange the characters of the keyword in sorted order and the corresponding columns
of the plain text.
STEP-5: Read the characters row wise or column wise in the former order to get the cipher text.
Program:
def encrypt_railfence(plain_text, key):
rail = [ ['_' for _ in range(len(plain_text)) ]
for _ in range(key)]
for i in range(len(plain_text)):
# check the direction of flow; reverse the direction if we've just filled the top or bottom rail
if (row == 0) or (row == key - 1):
dir_down = not dir_down
return cipher
INFORMATION SECURITY (3164603) 230173146008
# now read the matrix in zig-zag manner to get the original/plain text
plain = ""
dir_down = False
row, col = 0, 0
for i in range(len(cipher_text)):
# check the direction of flow
if (row == 0) or (row == key - 1):
dir_down = not dir_down
return plain
Output:
INFORMATION SECURITY (3164603) 230173146008
Conclusion: The Rail Fence Transposition Cipher is a type of transposition cipher that rearranges
the plaintext by writing it in a zigzag pattern across a series of rails, then reading it off in rows. This
cipher is relatively simple to implement but can be challenging to decipher without knowledge of the
number of rails used.
Quiz:
1. Encryption in Rail fence cipher is done using __(a)___
a) by arranging the letters in a zig zag fashion in a table
b) by randomly arranging letters
c) by arranging letters in vigenere table
d) by swapping adjacent letters
2. Rail fence cipher is more secure than one time pad cipher? True/False
A. False. The Rail Fence Cipher is a relatively simple transposition cipher, and it is not considered to be
as secure as the One-Time Pad (OTP) cipher. The OTP cipher is considered to be theoretically
unbreakable, as long as the key is truly random, never reused, and kept secret. The Rail Fence Cipher,
on the other hand, can be broken using frequency analysis and other cryptanalytic techniques,
especially if the key (i.e., the number of rails) is small or known.
Suggested Reference:
1. https://crypto.interactive-maths.com/rail-fence-cipher.html
References used by the students:
https://crypto.interactive-maths.com/rail-fence-cipher.html
Rubrics 1 2 3 4 5 Total
Marks
Experiment No: 4
actually used in the algorithm. The algorithm involves carrying out combinations, substitutions and
permutations between the text to be encrypted and the key, while making sure the operations can be
performed in both directions. The key is ciphered on 64 bits and made of 16 blocks of 4 bits,
generally denoted k1 to k16. Given that "only" 56 bits are actually used for encrypting, there can be 2 56
different keys.
Algorithm:
STEP-1: Read the 64-bit plain text.
STEP-2: Split it into two 32-bit blocks and store it in two different arrays.
STEP-3: Perform XOR operation between these two arrays.
STEP-4: The output obtained is stored as the second 32-bit sequence and the original
second 32-bit sequence forms the first part.
STEP-5: Thus the encrypted 64-bit cipher text is obtained in this way. Repeat the same process
for the remaining plain text characters.
Program:
def permute(bits, permutation_table):
"""Permutes the given bits according to the permutation table."""
return [bits[i - 1] for i in permutation_table]
def generate_subkeys(key):
"""Generates 16 subkeys from the given key."""
pc1_table = [57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36, 63,
55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4]
pc2_table = [14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10, 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2, 41, 52, 31, 37, 47, 55, 30,
40, 51, 45, 33, 48, 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32]
INFORMATION SECURITY (3164603) 230173146008
shifts = [1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1]
return subkeys
if decrypt:
subkeys = reversed(subkeys)
def string_to_bits(text):
"""Converts a string to a list of bits."""
bits = []
for char in text:
bits.extend(list(map(int, bin(ord(char))[2:].zfill(8))))
return bits
def bits_to_string(bits):
"""Converts a list of bits to a string."""
text = ''
for i in range(0, len(bits), 8):
byte = bits[i:i + 8]
text += chr(int(''.join(map(str, byte)), 2))
return text
ciphertext_bits = []
for i in range(0, len(plaintext_bits), 64):
block = plaintext_bits[i:i + 64]
ciphertext_bits.extend(des(block, key_bits))
return bits_to_string(ciphertext_bits)
plaintext_bits = []
for i in range(0, len(ciphertext_bits), 64):
block = ciphertext_bits[i:i + 64]
plaintext_bits.extend(des(block, key_bits, decrypt=True))
padding_count = 0
for i in range(len(plaintext_bits)-1,0,-1):
if plaintext_bits[i] == 0:
padding_count+=1
else:
break
if padding_count > 0:
plaintext_bits = plaintext_bits[:-padding_count]
return bits_to_string(plaintext_bits)
# Example usage
key = input("Enter the key: ")
plaintext = input("Enter the plain text: ")
Output:
Conclusion:
INFORMATION SECURITY (3164603) 230173146008
The Data Encryption Standard (DES) is a symmetric-key block cipher that was widely used for data
encryption. It operates on 64-bit blocks of data using a 56-bit key, applying a series of
transformations and permutations to encrypt and decrypt the data. DES was adopted as a federal
standard in the United States in 1977 but has since been largely replaced by more secure algorithms,
such as AES (Advanced Encryption Standard), due to vulnerabilities that were discovered over time.
Quiz:
Suggested Reference:
1. https://www.tutorialspoint.com/cryptography/data_encryption_standard.htm
Rubrics 1 2 3 4 5 Total
Marks
Experiment No: 5
Example:
Algorithm:
STEP-1: Derive the set of round keys from the cipher key.
STEP-2: Initialize the state array with the block data (plaintext).
STEP-3: Add the initial round key to the starting state array.
STEP-4: Perform nine rounds of state manipulation.
STEP-5: Perform the tenth and final round of state manipulation.
STEP-6: Copy the final state array out as the encrypted data (ciphertext).
Program:
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
INFORMATION SECURITY (3164603) 230173146008
import java.util.Base64;
// Encrypt
Cipher aesCipher = Cipher.getInstance("AES");
aesCipher.init(Cipher.ENCRYPT_MODE, secretKey);
byte[] cipherText = aesCipher.doFinal(plainText.getBytes());
System.out.println("Encrypted Text: " +
Base64.getEncoder().encodeToString(cipherText));
// Decrypt
aesCipher.init(Cipher.DECRYPT_MODE, secretKey);
byte[] decryptedText = aesCipher.doFinal(cipherText);
System.out.println("Decrypted Text: " + new String(decryptedText));
}
}
Output:
Conclusion:
Successfully understood and implemented the AES encryption and decryption process.
AES ensures confidentiality by using secure symmetric encryption, making it suitable for
protecting sensitive data.
INFORMATION SECURITY (3164603) 230173146008
Quiz:
Suggested Reference:
1. https://www.geeksforgeeks.org/advanced-encryption-standard-aes/
References used by the students:
https://www.geeksforgeeks.org/advanced-encryption-standard-aes/
javaTpoint.com
Rubrics 1 2 3 4 5 Total
Marks
INFORMATION SECURITY (3164603) 230173146008
Experiment No: 6
Algorithm:
Program:
from time import time
def is_prime(num):
if num < 2:
return False
for i in range(2, int(num**0.5) + 1):
if num % i == 0:
return False
return True
# Step 1: Compute n
n=p*q
# Step 3: Choose an integer e such that e and phi(n) are coprime; 1 < e < phi
e=0
for i in range(2, phi):
if gcd(i, phi) == 1:
e=i
break
# Step 4:
d = multiplicative_inverse(e, phi)
endTime = time()
print(f"Time taken to complete: {(endTime - startTime):.4f} seconds\n", "*"*60, sep="")
Output:
INFORMATION SECURITY (3164603) 230173146008
Conclusion: The RSA algorithm is a widely used public-key encryption algorithm that enables
secure data transmission by using a pair of keys: a public key for encryption and a private key for
decryption. It relies on the mathematical difficulty of factoring large composite numbers, making it a
secure method for protecting sensitive information.
Quiz:
1. if p=7, q=1 and e=13 than what will be value of d?
Here q = 1, but 1 is not a prime number. So the algorithm can’t be applied.
Suggested Reference:
1. https://www.cemc.uwaterloo.ca/resources/real-world/RSA.pdf
Rubrics 1 2 3 4 5 Total
Marks
INFORMATION SECURITY (3164603) 230173146008
Experiment No: 7
Algorithm:
STEP-1: Both Alice and Bob shares the same public keys g and p.
STEP-2: Alice selects a random public key a.
STEP-3: Alice computes his secret key A as ga mod p.
STEP-4: Then Alice sends A to Bob.
STEP-5: Similarly Bob also selects a public key b and computes his secret key as B and sends
the same back to Alice.
STEP-6: Now both of them compute their common secret key as the other one’s secret key
power of a mod p.
Program:
def powMod(base, expo, m):
result = 1
while expo > 0:
INFORMATION SECURITY (3164603) 230173146008
if expo % 2 == 1:
result = (result * base) % m
base = (base * base) % m
expo //= 2
return result
q = int(input("Enter q: "))
alp = int(input("Enter alpha: "))
Ya = powMod(alp, Xa, q)
Yb = powMod(alp, Xb, q)
print("User A's public key(Ya): ", Ya)
print("User B's public key(Yb): ", Yb)
k1 = powMod(Ya, Xb, q)
k2 = powMod(Yb, Xa, q)
Output:
Conclusion: The Diffie-Hellman key exchange is a cryptographic method that allows two parties to
establish a shared secret key over an insecure communication channel. It works by each party
generating a pair of keys (public and private) and exchanging the public keys, which are then used to
calculate the shared secret key. This method ensures secure key exchange without actually
exchanging the secret key itself.
Quiz:
1. Suppose that two parties A and B wish to set up a common secret key (D-H key) between
themselves using the Diffie Hellman key exchange technique. They agree on 7 as the modulus
and 3 as the primitive root. Party A chooses 2 and party B chooses 5 as their respective secrets.
Their D-H key is ?
Here, q=7, a=3, Xa=2, Xb=5.
Then, Ya=a^(Xa) % q = 3^(2)%7 = 2 and
Yb=a^(Xb) % q = 3^(5)%7 = 5
So, D-H key is Ya^(Xb) % q = 2^(5) % 7 = 4; Yb^(Xa) % q = 5^(2) % 7 = 4.
Suggested Reference:
1. https://www.techtarget.com/searchsecurity/definition/Diffie-Hellman-key-exchange
References used by the students:
https://www.techtarget.com/searchsecurity/definition/Diffie-Hellman-key-exchange
Rubrics 1 2 3 4 5 Total
Marks
Experiment No: 8
Example:
INFORMATION SECURITY (3164603) 230173146008
Algorithm:
STEP-1:Readthe128-bitplaintext.
STEP-2:Divideintofourblocksof32-bitsnamedasA,B,CandD.
STEP-3:Computethefunctionsf,g,handiwithoperationssuchas,rotations,permutations,etc,.
STEP-
4:TheoutputofthesefunctionsarecombinedtogetherasFandperformedcircularshi
ftingandthengiventokeyround.
STEP-5:Finally,rightshiftof‘s’timesareperformedandtheresultsarecombinedtogether
toproducethefinaloutput.
Program:
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Scanner;
} catch (NoSuchAlgorithmException e) {
System.out.println("Exception: " + e.getMessage());
}
}
}
Output:
Conclusion:
Successfully understood and implemented the working of the MD5 hashing algorithm.
MD5 helps in ensuring message integrity by generating a unique 128-bit hash value.
Quiz:
Suggested Reference:
1. https://www.simplilearn.com/tutorials/cyber-security-tutorial/md5-algorithm
Rubrics 1 2 3 4 5 Total
Marks
INFORMATION SECURITY (3164603) 230173146008
Experiment No: 9
Write a program to generate SHA-1 hash.
Date:
Relevant CO:Explore the concept of hashing and implement various hashing algorithms for
message integrity
Objectives: (a) to understand working fundamental of SHA-1
(b) to carry out Implementation ofSHA-1.
Equipment/Instruments: Computer System, Turbo-c/ JDK
Theory: In cryptography, SHA-1 (Secure Hash Algorithm 1) is a cryptographic hash function.SHA-
1 produces a 160-bit hash value known as a message digest. The way this algorithm
works is that for a message of size < 264 bits it computes a 160-bit condensed output called
messagedigest.The SHA-1algorithm isdesignedsothatitis practically infeasible to find two input
messages that hash to the same output message. A hash function such as SHA-1 is used to calculate
an alphanumeric string that serves as the cryptographic representation of a file or a piece of data.
This is called a digest and can serve as a digital signature.Itissupposedtobe Unique Non-reversible.
Example:
Algorithm:
STEP-1:Readthe256-bitkeyvalues.
STEP-2:Divideintofiveequal-sizedblocksnamedA,B,C,DandE.
STEP-3:TheblocksB,CandDarepassedtothefunctionF.
STEP-4:TheresultantvalueispermutedwithblockE.
STEP-5:TheblockAisshiftedrightby‘s’timesandpermutedwiththeresultofstep-4.
STEP-6:
Thenitispermutedwithaweightvalueandthenwithsomeotherkeypairandtakenasthe
firstblock.
STEP-7:BlockAistakenasthesecondblockandtheblockBisshiftedby‘s’times and taken as the
third block.
STEP-8:TheblocksCandDaretakenastheblockDandEforthefinaloutput.
INFORMATION SECURITY (3164603) 230173146008
Program:
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Scanner;
Output:
Conclusion:
Quiz:
● Answer: 64 rounds.
INFORMATION SECURITY (3164603) 230173146008
Suggested Reference:
1. https://www.geeksforgeeks.org/sha-1-hash-in-java/.
1. https://www.geeksforgeeks.org/sha-1-hash-in-java/.
Rubrics 1 2 3 4 5 Total
Marks
INFORMATION SECURITY (3164603) 230173146008
Experiment No: 10
Algorithm:
STEP-1:Key Generation.
STEP-2:Signature Generation.
STEP-3:Key Distribution.
STEP-4:Signature Verification.
Program:
import java.security.*;
import java.util.Base64;
import java.util.Scanner;
} catch (Exception e) {
System.out.println("Exception: " + e.getMessage());
}
}
}
Output:
Conclusion:
Successfully implemented the Digital Signature Standard (DSS) using Java.
Understood how digital signatures verify message integrity and authenticate the sender
INFORMATION SECURITY (3164603) 230173146008
Quiz:
Suggested Reference:
1. https://www.geeksforgeeks.org/digital-signature-standard-dss/
Rubrics 1 2 3 4 5 Total
Marks
INFORMATION SECURITY (3164603) 230173146008
3. Select Caesar mode and the “alphabet character” is “N.” That means that the text will
have characters replaced starting with N. So A >N, B>M, and so on. Click on “encrypt.”
4. The document is encrypted as per the configured policy. This is a very basic example of how
symmetric encryption works.
Decryption process
Perform the following steps to decrypt the encrypted document.
Conclusion:
● CrypTool provides a hands-on approach to understand classical
cryptographic methods.
● The demonstration with Caesar Cipher explained how symmetric key
encryption and decryption work.
● It also shows the importance of a shared key (secret) in symmetric
cryptography.
Suggested Reference:
1. https://www.c-sharpcorner.com/article/encryption-decryption-using-cryptool/
2. Case study: List 10 recent cyber attacks/data breaches and explain any
one in detail.
● What Happened:
In September 2023, MGM Resorts International faced a major cyberattack that paralyzed its
systems. Hackers used social engineering tactics to gain access to internal systems.
● Method Used:
●
o The attack started with a social engineering phone call to the IT help desk.
o After gaining initial access, attackers deployed ransomware, encrypted files, and stole
sensitive customer data.
● Impact:
INFORMATION SECURITY (3164603) 230173146008
o Hotel bookings, casino operations, digital room keys, ATMs, and slot machines were
affected.
o Financial losses were estimated in the range of $100 million+.
o Customer personal details (such as names, addresses, and IDs) were compromised.
● Lessons Learned: