Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.97/39: Рейтинг темы: голосов - 39, средняя оценка - 4.97
Автор FAQ
3144 / 364 / 3
Регистрация: 08.08.2009
Сообщений: 1,126
1

Нужна хеш-функция для программы на языке С++

14.06.2010, 22:36. Показов 7937. Ответов 11
Метки нет (Все метки)

К моей программе необходимо прикрутить функцию для вычисления хеша. Подскажите, пожалуйста, работоспособный исходник хеш-функции для программы на языке С++.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.06.2010, 22:36
Ответы с готовыми решениями:

Хеш-функция и хеш-таблица
Всем привет, написал хеш-функцию для строки: #include <iostream> //Главная библиотека #include...

Конвертер для перевода программ на языке PHP в текст программы на языке Assembler
Всем привет. Как можно реализовать такую задачу? Разработать конвертор в языке Assembler для...

Для формирования хеш-адреса использовать хеш-функцию универсального хеширования
Для формирования хеш-адреса использовать хеш-функцию универсального хеширования . Подскажите...

Каким образом unordered_map выдает правильное значение для ключа, если его хеш функция допускает коллизии?
Читаю книгу джосаттис стандартная библиотека c++, там в разделе про unordered_map есть описание...

11
332 / 247 / 32
Регистрация: 13.12.2009
Сообщений: 589
15.06.2010, 09:36 2
http://ru.wikipedia.org/wiki/Crc#CRC-32
1
Автор FAQ
3144 / 364 / 3
Регистрация: 08.08.2009
Сообщений: 1,126
15.06.2010, 14:35  [ТС] 3
Цитата Сообщение от Roma_F Посмотреть сообщение
CRC-32 не подходит. Слишком короткая строка получатся. И это не хэш функция.
0
2822 / 1631 / 252
Регистрация: 03.12.2007
Сообщений: 4,222
15.06.2010, 15:11 4
Цитата Сообщение от RNT Посмотреть сообщение
И это не хэш функция.
Да? А что же тогда?
0
Автор FAQ
3144 / 364 / 3
Регистрация: 08.08.2009
Сообщений: 1,126
15.06.2010, 18:01  [ТС] 5
Цитата Сообщение от Somebody Посмотреть сообщение
Да? А что же тогда?
Контрольная сумма
0
Эксперт С++
2921 / 1270 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
15.06.2010, 18:32 6
Хорошо, тогда сформулируй, в чем разница между хеш-функцией и контрольной суммой.
0
332 / 247 / 32
Регистрация: 13.12.2009
Сообщений: 589
15.06.2010, 18:55 7
RNT, http://ru.wikipedia.org/wiki/Хеширование
0
Автор FAQ
3144 / 364 / 3
Регистрация: 08.08.2009
Сообщений: 1,126
16.06.2010, 09:12  [ТС] 8
Цитата Сообщение от CheshireCat Посмотреть сообщение
Хорошо, тогда сформулируй, в чем разница между хеш-функцией и контрольной суммой.
Контрольные суммы
Несложные, крайне быстрые и легко реализуемые аппаратные алгоритмы, используемые для защиты от непреднамеренных искажений, в том числе ошибок аппаратуры.

По скорости вычисления в десятки и сотни раз быстрее, чем криптографические хеш-функции, и значительно проще в аппаратной реализации.

Платой за столь высокую скорость является отсутствие криптостойкости — лёгкая возможность подогнать сообщение под заранее известную сумму. Также обычно разрядность контрольных сумм (типичное число: 32 бита) ниже, чем криптографических хешей (типичные числа: 128, 160 и 256 бит), что означает возможность возникновения непреднамеренных коллизий.

Простейшим случаем такого алгоритма является деление сообщения на 32- или 16- битные слова и их суммирование, что применяется, например, в TCP/IP.

Как правило, к такому алгоритму предъявляются требования отслеживания типичных аппаратных ошибок, таких, как несколько подряд идущих ошибочных бит до заданной длины. Семейство алгоритмов т. н. «циклических избыточных кодов» удовлетворяет этим требованиям. К ним относится, например, CRC32, применяемый в аппаратуре Ethernet и в формате упакованных файлов ZIP.

Криптографические хеш-функции
Среди множества существующих хеш-функций принято выделять криптографически стойкие, применяемые в криптографии. Для того, чтобы хеш-функция H считалась криптографически стойкой, она должна удовлетворять трем основным требованиям, на которых основано большинство применений хеш-функций в криптографии:

* Необратимость: для заданного значения хеш-функции m должно быть вычислительно неосуществимо найти блок данных X, для которого H(X) = m.
* Стойкость к коллизиям первого рода: для заданного сообщения M должно быть вычислительно неосуществимо подобрать другое сообщение N, для которого H(N) = H(M).
* Стойкость к коллизиям второго рода: должно быть вычислительно неосуществимо подобрать пару сообщений ~(M, M'), имеющих одинаковый хеш.

Данные требования не являются независимыми:

* Обратимая функция нестойка к коллизиям первого и второго рода.
* Функция, нестойкая к коллизиям первого рода, нестойка к коллизиям второго рода; обратное неверно.

Следует отметить, что не доказано существование необратимых хеш-функций, для которых вычисление какого-либо прообраза заданного значения хеш-функции теоретически невозможно. Обычно нахождение обратного значения является лишь вычислительно сложной задачей.

Атака «дней рождения» позволяет находить коллизии для хеш-функции с длиной значений n битов в среднем за примерно 2n / 2 вычислений хеш-функции. Поэтому n-битная хеш-функция считается криптостойкой, если вычислительная сложность нахождения коллизий для неё близка к 2n / 2.

Для криптографических хеш-функций также важно, чтобы при малейшем изменении аргумента значение функции сильно изменялось (лавинный эффект). В частности, значение хеша не должно давать утечки информации даже об отдельных битах аргумента. Это требование является залогом криптостойкости алгоритмов хеширования, хеширующих пользовательский пароль для получения ключа.
0
332 / 247 / 32
Регистрация: 13.12.2009
Сообщений: 589
16.06.2010, 10:24 9
RNT, это тоже самое что спорить какой стол подходит для кухни - круглый или обеденный, или какая машина надёжнее - дизельная или хэтчбэк. Ты доказываешь что "криптографическая хеш-функция" это настоящая "хеш-функция", а остальные нет.

"контрольная сумма" = "хеш-сумма". "Криптографические хеш-функции" тоже вычисляют хеш-сумму (или контрольную сумму, или просто "хеш"). А назвали их криптографичискими из-за большей надёжности и стойкости.

Кстати из твоего первого сообщения совершенно непонятно для чего тебе нужна хеш-функция - проверять пароли, файлы или просто для быстрого поиска по ключу.
2
Автор FAQ
3144 / 364 / 3
Регистрация: 08.08.2009
Сообщений: 1,126
16.06.2010, 21:40  [ТС] 10
Нужна криптографическая хэш-функция.

Цитата Сообщение от Roma_F Посмотреть сообщение
Кстати из твоего первого сообщения совершенно непонятно для чего тебе нужна хеш-функция - проверять пароли, файлы или просто для быстрого поиска по ключу.
Объясню зачем это нужно. Подробнее можно узнать прочитав эту тему . Я нашел интересный способ хранения паролей от любого количества учетных записей при помощи хэш-функции. Минус такого способа в том, что хэш-функция выводит шестнадцатеричный код, который в качестве пароля ненадежен, т.к. используются только 16 разных символов. Я сделал программу, которая разбирает вывод хэш-функции, два подряд идущих символа (т.е. один байт) преобразовает в одну букву алфавита или цифру.
Например, такой результат хэш-функции
e332a76c29654fcb7f6e6b31ced090c7
преобразовывает в такой
6ibhugs3khhi34x2
Длина строки уменьшается в два раза, но зато пароль становится надежным. Поэтому мне нужна криптографическая хэш-функция, способная выдать строку достаточной длины. Связываться с ненадежными контрольными суммами я не хочу т.к. для хранения паролей их не следует использовать.
0
332 / 247 / 32
Регистрация: 13.12.2009
Сообщений: 589
17.06.2010, 00:50 11
может это подойдёт
0
Автор FAQ
3144 / 364 / 3
Регистрация: 08.08.2009
Сообщений: 1,126
17.06.2010, 18:30  [ТС] 12
Цитата Сообщение от Roma_F Посмотреть сообщение
может это подойдёт
Не подходит. Нужна криптографическая хэш-функция, а не шифр.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.06.2010, 18:30

Помощь в написании контрольных, курсовых и дипломных работ здесь.

На каком языке написана эта программи и для чего нужна папка Browser
на каком язике написанно этот приложения ы длячего нужни файлы папке Brawser изучиф оставте своеи...

Хеш функция
Здравствуйте. Помогите с задачей. Таблица строиться по методу цепочек с использованием...

Хеш функция
Нужно написать функцию, которая от строки name возвращает хеш код. Хеш код получить методом...

Хеш функция на си
Нужно написать хэш-функцию. На вход функции подается строка, на выходе сумма кодов символов


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.