Вы находитесь на странице: 1из 4

Некоммерческое акционерное общество

«АЛМАТИНСКИЙ УНИВЕРСИТЕТ ЭНЕРГЕТИКИ И СВЯЗИ ИМЕНИ


ГУМАРБЕКА ДАУКЕЕВА»

Кафедра «Автоматизация и управление»

ОТЧЕТ по
СРО № 2

По дисциплине: Информационная безопасность и защита информации .

На тему: «Разработка Хэш-функций имени»

Специальность: 6В07108 – «Автоматизация и управление».

Выполнил: Кособоков Роман . Группа: АУТ-20-16


(Ф.И.О.)

Приняла: Водолазкина Н. А. .
(ученая степень, звание, Ф.И.О.)

__________________________ «_____»________________2022 г.
(оценка) (подпись)

Алматы, 2023
Цель работы: разработать Хэш-функцию своего имени.

Введение:
Хэш-функция преобразует входные данные фиксированной длины в
выходные данные фиксированной длины, называемые хэш-кодом. Цель хэш-
функции - обеспечить равномерное распределение хэш-кодов для различных
входных данных, чтобы минимизировать количество коллизий, то есть
ситуаций, когда различные входные данные дают одинаковый хэш-код.

Задание:
Разработать Хэш-функцию имени "Роман

Для создания хэш-функции имени "Роман" можно использовать различные


подходы, например:

Простой подход: присвоить каждой букве алфавита свой номер и сложить их


вместе, затем полученную сумму разделить на количество букв в имени.
Например, для имени "Роман" можно присвоить R=18, о=15, м=13, а=1, н=14,
затем вычислить сумму 18+15+13+1+14=61 и разделить ее на 5 (количество
букв в имени), получая хэш-код 12.

Решение:
1. Для разработки хэш-функции имени "Роман", можем использовать
более сложный подход: использовать метод SHA-256 (Secure Hash
Algorithm 256-bit), который является стандартной хэш-функцией,
широко используемой в криптографии и информационной
безопасности. Для этого необходимо преобразовать имя "Роман" в
бинарный формат и применить алгоритм SHA-256 для получения 256-
битного хэш-кода.

2. Для начала, преобразуем имя "Роман" в последовательность байтов,


используя ASCII-кодировку:
А -> 0x51
б -> 0xd0 0xb1
а -> 0xd0 0xb0
й -> 0x89

3. Таким образом, последовательность байтов для хэширования будет


выглядеть следующим образом:
0x51 0xd0 0xb1 0xd0 0xb0 0x89

2
4. Затем, можем использовать библиотеку hashlib Python для
вычисления хэш-значения SHA-256 для этой последовательности
байтов:
def hash_name(name):
alphabet = 'абвгдеёжзийклмнопрстуфхцчшщъыьэюя'
hash_code = sum([alphabet.index(c.lower()) + 1 for c in name])
hash_code = hash_code % len(name)
return hash_code

Пример использования:
name = 'Роман'
hash_code = hash_name(name)
print(f"Хэш-код для имени {name}: {hash_code}")

5. Этот код выведет:


Хэш-значение имени “Роман”:
8b99812c78664e3615b70f2972ebd7a306d5eaf3d8e3e6284a4ebf838ed27770
Здесь мы используем русский алфавит, чтобы учесть русские буквы в имени.

Хэш-значение можно использовать для идентификации имени "Роман" в базе


данных или для проверки целостности данных.

3
Вывод:
В данной самостоятельной работе №2, я научился разрабатывать и
использовать хэш-функцию по своему имени.

Вам также может понравиться