Skip to main content

Hill Cipher

Definition​

The Hill Cipher is a polygraphic substitution cipher based on linear algebra. It operates on blocks of plaintext letters, typically 2 or 3 at a time, and uses modular arithmetic for encryption and decryption

Practice​

hillCipher(plaintext, keyMatrix, alphabetSize):
ciphertext = ""
for each block in plaintext:
numericalBlock = convertToNumerical(block)
encryptedBlock = multiplyMatrix(keyMatrix, numericalBlock, alphabetSize)
ciphertext += convertToLetters(encryptedBlock)
return ciphertext

multiplyMatrix(keyMatrix, block, alphabetSize):
result = []
for row in keyMatrix:
value = 0
for i in range(len(row)):
value += row[i] * block[i]
result.append(value % alphabetSize)
return result

convertToNumerical(block):
numericalBlock = []
for letter in block:
numericalBlock.append(letterToNumber(letter))
return numericalBlock

convertToLetters(block):
letters = ""
for num in block:
letters += numberToLetter(num)
return letters