350 Алгоритми та структури даних

Конспекти лекцій та Лабораторні роботи з дисципліни "Алгоритми та структури даних" для III курсу спеціальності 121 "Інженерія програмного забезпечення" ОКР "Фаховий молодший бакалавр" Херсонського політехнічного фахового коледжу Державного університету "Одеська політехніка"

View the Project on GitHub solidol/nmk-asd

Перелік лекцій

Випадкові значення та криптографія

Алгоритм генерації Рік створення Автор/Компанія Основне призначення Довжина генерації (біти) Приклад виходу Особливості
Linear Congruential Generator (LCG) 1949 Derrick Henry Lehmer Стандартний генератор PRNG Змінна 0.123456 (нормалізований) Простий у реалізації, але поганий період для великих систем.
Mersenne Twister 1997 Makoto Matsumoto, Takuji Nishimura Статистика, моделювання 19937 5489 2113 2592 4245 Дуже довгий період, високоякісний генератор для наукових цілей.
Xoroshiro128+ 2016 David Blackman, Sebastiano Vigna Високошвидкісне моделювання 128 42 13 55 88 Швидкий і ефективний для багатопотокових систем.
Xorshift 2003 George Marsaglia Швидкісне моделювання Змінна 78422393 Висока швидкість, але середня якість випадковості.
Middle Square Method 1949 John von Neumann Початковий PRNG Змінна 3741 Проста концепція, але швидка деградація якості при довгих обчисленнях.
Blum Blum Shub 1986 Lenore Blum, Manuel Blum, Michael Shub Криптографія Змінна 011010... (бітові послідовності) Дуже безпечний, але повільний через складність реалізації.
Lagged Fibonacci Generator (LFG) 1958 Peter Lewis Моделювання, статистика Змінна 0.51423 (нормалізований) Базується на Фібоначчі, використовується в моделях Монте-Карло.
CryptGenRandom 1998 Microsoft Криптографія, безпека 128 5F3F0C4D-76B5-4A2A-93B8 Використовується в Windows для генерації криптографічно стійких чисел.
Fortuna 2003 Bruce Schneier, Niels Ferguson Криптографія Змінна A1B2C3D4... Надійний криптографічний генератор, розроблений для високої безпеки.
WELL (Well Equidistributed Long-period Linear) 2006 François Panneton, Pierre L’Ecuyer Моделювання, статистика 512, 1024, 19937 01234567... Поліпшення Mersenne Twister з кращими характеристиками для великих систем.
ChaCha20 2008 Daniel J. Bernstein Криптографія 256 C3D2E1F0... Використовується в сучасних системах шифрування для генерації ключів.
ISAAC (Indirection, Shift, Accumulate, Add, and Count) 1996 Robert Jenkins Криптографія, ігрові системи 32–64 A123BCD0 Дуже швидкий та стійкий до атак.
Random123 2011 John Salmon et al. Паралельні обчислення Змінна 0xAABBCCDDEEFF0011 Створений для паралельних і розподілених систем.
PCG (Permuted Congruential Generator) 2014 Melissa O’Neill Загальні обчислення, моделювання Змінна 42 76 59 21 Висока якість випадковості, проста реалізація.
SecureRandom 1990-х Sun Microsystems Криптографія Змінна AD12FE340 Використовується в Java для генерації криптографічно безпечних чисел.

Теми для самостійного вивчення

  1. Принципи роботи алгоритмів групи CRC
  2. Принципи роботи алгоритмів групи MD
  3. Принципи роботи алгоритмів групи SHA
  4. Недоліки алгоритмів групи MD

Контрольні питання

  1. Що таке хеш-функція?
  2. Яке призначення хеш-функцій?
  3. Які алгоритми хешування ви знаєте?
  4. В чому головна відмінність процесів хешування та шифрування?