>>> hill_cipher = HillCipher(np.array([[2, 5], [1, 6]])) >>> hill_cipher.decrypt('WHXYJOLM9C6XT085LL') 'TESTINGHILLCIPHERR' >>> hill_cipher.decrypt('85FF00') 'HELLOO'
(self, text: str)
| 166 | return self.to_int(self.modulus(inv_key)) |
| 167 | |
| 168 | def decrypt(self, text: str) -> str: |
| 169 | """ |
| 170 | >>> hill_cipher = HillCipher(np.array([[2, 5], [1, 6]])) |
| 171 | >>> hill_cipher.decrypt('WHXYJOLM9C6XT085LL') |
| 172 | 'TESTINGHILLCIPHERR' |
| 173 | >>> hill_cipher.decrypt('85FF00') |
| 174 | 'HELLOO' |
| 175 | """ |
| 176 | decrypt_key = self.make_decrypt_key() |
| 177 | text = self.process_text(text.upper()) |
| 178 | decrypted = "" |
| 179 | |
| 180 | for i in range(0, len(text) - self.break_key + 1, self.break_key): |
| 181 | batch = text[i : i + self.break_key] |
| 182 | vec = [self.replace_letters(char) for char in batch] |
| 183 | batch_vec = np.array([vec]).T |
| 184 | batch_decrypted = self.modulus(decrypt_key.dot(batch_vec)).T.tolist()[0] |
| 185 | decrypted_batch = "".join( |
| 186 | self.replace_digits(num) for num in batch_decrypted |
| 187 | ) |
| 188 | decrypted += decrypted_batch |
| 189 | |
| 190 | return decrypted |
| 191 | |
| 192 | |
| 193 | def main() -> None: |
no test coverage detected