def test_hash_code(self): self.assertEqual("3e25960a79dbc69b674cd4ec67a72c62", Crypter.get_MD5_hash("Hello world")) self.assertEqual("d41d8cd98f00b204e9800998ecf8427e", Crypter.get_MD5_hash("")) self.assertEqual("aaccedee5cc97822658304e92121bd3f", Crypter.get_MD5_hash("уекрекыонекуцкнелеунл"))
def _convert_text_to_special_byte_arr(input_text): """Конвертирует текст в специальный байтовый массив, который впоследствии будет вставлен в .bmp файл.""" encoded_text = Crypter.encode_text(input_text).encode("UTF-8") text_hashcode = Crypter.get_MD5_hash(input_text).encode("UTF-8") result_arr_length = Converter.int_to_bytes( len(encoded_text) + len(text_hashcode) + 4, 4) return encoded_text + text_hashcode + result_arr_length
def _check_message_availability(special_byte_arr): """Проверяет массив байт на наличие сообщения и метаданных.""" try: hash_from_byte_arr = special_byte_arr[-36:-4].decode("UTF-8") encoded_text = special_byte_arr[:-36].decode("UTF-8") decoded_text = Crypter.decode_text(encoded_text) hash_of_decoded_text = Crypter.get_MD5_hash(decoded_text) return hash_of_decoded_text == hash_from_byte_arr except UnicodeDecodeError: raise Exception(strings.DATA_CORRUPTED)