Maciej Czyzewski зібрав на Github збірку вихідних кодів різних алгоритмів хешування: для обчислення контрольних сум, некриптографічних і криптографічних.
У репозиторії можна знайти, наприклад, реалізації CRC/MD5/ГОСТ 34.311-95/SHA-3. Кожна хеш-функція представлена вихідцем мовою С і make-файлом для його складання. Алгоритми передбачається використовувати в цілях навчання - в реальних проектах рекомендується в цілях безпеки використовувати існуючі бібліотеки (наприклад, Crypto++ для C++, BouncyCastle для Java і т. д.), список яких є в репозиторії.
Над репозиторієм триває активна робота, тому в перспективі варто чекати поповнення колекції.
Github
Коротка довідка про хеш-функції
Хеш-функції - це функції, призначені для «стиснення» довільного повідомлення або набору даних, записаних, як правило, в двійковому алфавіті, в деяку бітову комбінацію фіксованої довжини, звану згорткою. Хеш-функції мають різноманітні застосування при проведенні статистичних експериментів, при тестуванні логічних пристроїв, при побудові алгоритмів швидкого пошуку і перевірки цілісності записів у базах даних. Основною вимогою до хеш-функцій є рівномірність розподілу їх значень при випадковому виборі значень аргументу.
Криптографічною хеш-функцією називається всяка хеш-функція, що є криптостійкою, тобто задовольняє ряду вимог специфічних для криптографічних додатків. У криптографії хеш-функції застосовуються для вирішення наступних завдань:
- побудови систем контролю цілісності даних при їх передачі або зберіганні,
- це автентифікація джерела даних.