[Введення]
Моя стаття постарається пролити трохи світла на шифрування в цілому, способи шифрування і алгоритми шифрування даних.

Шифрування спосіб приховування інформації, що застосовується для зберігання інформації в надійних джерелах або передачі її по незахищеним каналам зв’язку. Методи шифрування можуть бути різними:
— Тайнопис не існує якогось ключа, метод розшифровки знають тільки одержувач і відправник.
— Симетричне шифрування: іншим людям може бути відомий алгоритм шифрування, але невідомий ключ, який однаковий для відправника і одержувача повідомлення;
Більшість сучасних стійких симетричних алгоритмів використовують ключ довжиною 64256 біт (832 байта).
— Асиметричне шифрування: стороннім особам може бути відомий алгоритм шифрування, і, можливо відкритий ключ, але невідомий закритий ключ відомий тільки одержувачу. Наприклад, алгоритм RSA, про нього я розповім нижче.

Не буду довго даремно просторікувати, перейду до опису самих алгоритмів. Їх дуже багато, тому я перерахую лише найпоширеніші з них.

[Алгоритми шифрування]
— md5 (англ. Message Digest 5) — 128-бітний алгоритм хешування, розроблений професором Рональдом Л. Рівестом в 1991 році.
Спробую описати принцип його роботи. Вхідні дані вирівнюються так, щоб їх розмір був порівнянний з 448 по модулю 512. Спочатку дописується одиничний біт (навіть якщо довжина порівнянна з 448), потім потрібну кількість нульових біт.
Дописування 64 — бітного представлення довжини даних до вирівнювання. Якщо довжина перевершує 264 ? 1, то дописуються молодші біти.
Ініціалізуються 4 змінних розміром по 32 біта:
А = 01 23 45 67;
В = 89 AB CD EF;
З = FE DC BA 98;
D = 76 54 32 10.
Вирівняні дані розбиваються на блоки по 32 біт, і кожен блок проходить 4 раунди із 16 операторів. Всі оператори однотипні і мають вигляд:
[abcd k s i], визначається як
a = b + ((a + Fun(b,c,d) + X[k] + T ) < < < s), де X — блок даних, а T[1..64] — 64х елементна таблиця даних побудована наступним чином:
T[i] = int(4294967296 * | sin(i) |), s — циклічний зсув вліво на s біт отриманого 32-бітного аргументу.
У першому раунді Fun F(X, Y, Z) = XY v (not X)Z
У другому раунді Fun G(X, Y, Z) = XZ v (not Z)Y.
У третьому раунді Fun Н(Х, Y, Z) = X xor Y xor Z.
У четвертому раунді I Fun(Х, Y, Z) = Y xor (X v (not Z)).

Md5 брутеры. Я юзаю Advanced MD5 Recovery infostore.org/info/1737606

— DES (Data Encryption Standard) — розроблений у середині 70-x років. Він використовується в багатьох криптографічних системах. Це блочний алгоритм шифрування симетричним ключем. Ключ складається з 64 бітів, але лише 56 з них застосовуються безпосередньо при шифруванні. 8 призначені для контролю парності: вони встановлюються так, щоб кожен з 8 байтів ключа мав непарне значення. Шифруемая інформація обробляється блоками по 64 біта, причому кожен блок модифікується за допомогою ключа в интерационной процедурою, що включає 16 циклів. В даний момент при довжині ключа 56 біт алгоритм вважається стійким до злому.
DES брутер PasswordsPro. Прога дуже хороша, інфу і нею, та й її саму ти зможеш взяти тут: www.insidepro.com/rus/passwordspro.shtml

— ГОСТ_28147-89 вітчизняний дефолтний алгоритм. Радянський і російський стандарт симетричного шифрування, введений в 1990 році. Повна назва — «ГОСТ 2814789 Системи обробки інформації. Захист криптографічний. Алгоритм криптографічного перетворення».

ГОСТ 28147-89 це блочний шифр з 256-бітовим ключем і 32 циклами перетворення, що оперує 64-бітними блоками. Базовим режимом шифрування ГОСТ 28147-89 є режим простої заміни (визначені також більш складні режими: гамування та гамування зі зворотним зв’язком). Для зашифрування в цьому режимі відкритий текст спочатку розбивається на ліву і праву половини L{efl} і R{ight}. На i-му циклі використовується підключ k[i]:
R[i] + 1 = L[i]
L[i+1] = R[i] xor f(L[i], k[i])
Для генерації підключів вихідний 256-бітний ключ розбивається на вісім 32-бітних блоків: k[1]… k[8].

Розшифрування виконується так само, як і зашифрування, але інвертується порядок підключів k[i].

Функція f(L[i], k[i]) обчислюється наступним чином:
R[i-1] і k[i] складаються по модулю 2^32.

Результат розбивається на вісім 4-бітових підпослідовностей, кожна з яких надходить на вхід S-блоку. Загальна кількість S-блоків Госту вісім, тобто стільки ж, скільки і підпослідовностей (k[1]… k[8]. Кожен S-блок являє собою перестановку чисел від 0 до 15. Перша 4-бітна підпослідовність потрапляє на вхід першого S-блоку, друга на вхід другого і т. д.
Якщо S-блок виглядає так:
1, 15, 13, 0, 5, 7, 10, 4, 9, 2, 3, 14, 6, 11, 8, 12
і на вході S-блоку 0, то на виході буде 1, якщо 9, то на виході буде 2 і т. д.

Виходи всіх восьми S-блоків об’єднуються в 32-бітне слово, потім все слово циклічно зсувається вліво на 11 біт.
Всі вісім S-блоків можуть бути різними.

— 3DES (потрійне DES) симетричний блоковий криптографічний алгоритм, створений на основі алгоритму DES, з метою усунення головного недоліку останнього — малої довжини ключа 56 біт), який може бути зламаний методом перебору ключа.
У 3-DES був обраний як простий шлях збільшення довжини ключа, без необхідності переходити на новий алгоритм у ньому використовується над 64 бітний блок даних кілька разів проводиться шифрування алгоритму DES (звичайно з різним ключем), у найпростішому варіанті це виглядає як: DES(k3;DES(k2;DES(k1;M))), де M -блок вихідних даних, k1, k2, k3 ключі DES. Довжина ключа алгоритму 3-DES дорівнює 168 біт (3 x ключ DES). Я не буду описувати принцип роботи цього алгоритму, так як він практично ідентичний DES.

— IDEA (International Data Encryption Algorithm). Початковий варіант алгоритму IDEA з’явився в 1990 р. Розробники алгоритму, Ксуеджа Гавкіт (Xuejia Lai) і Джеймс Мессі (James Massey) зі Швейцарського інституту ETH Zurich, дали йому назву PES (Proposed Encryption Standard — пропонований стандарт шифрування), оскільки даний алгоритм був запропонований на заміну стандарту DES.
Через рік алгоритм був модифікований з метою посилення криптостійкості до диференціального криптоаналізу. Нова версія отримала назву IPES (Improved PES — покращений PES), а ще через рік алгоритм змінив назву на IDEA (International Data Encryption Algorithm — міжнародний алгоритм шифрування даних).
Основні характеристики і структура
Алгоритм IDEA шифрує дані блоками по 64 біт, а ключ шифрування алгоритму має розмір 128 біт. Блок шифруемых даних розбивається на чотири 16-бітних субблока A, B, C і D (рис. 1), над якими виконується вісім раундів перетворень:
A = A [x] Kr1
B = B + Kr2
C = C + Kr3
D = D [x] Kr4
T1 = A [+] C
T2 = B [+] D
T1 = T1 [x] Kr5
T2 = T1 + T2
T2 = T2 [x] Kr6
T1 = T1 + T2
A = A [+] T2
B = B [+] T1
C = C [+] T2
D = D [+] T1,
де Krn — підключ n раунду r, “+” — додавання 16-бітних операндів за модулем 2{у 16-й ступеня}, [+] — побітова логічна операція «виключне або» (XOR), [x] — множення 16-бітних операндів за модулем (2{у 16-й ступеня} + 1), причому в якості значення субблока, що складається з одних нулів, береться значення 2{у 16-й ступеня}.
Після виконання описаних вище дій два внутрішніх субблока (B і C) міняються місцями — у всіх раундах, крім останнього. По завершенні восьми раундів виконуються додаткові перетворення (іноді звані дев’ятим раундом алгоритму):
A’ = A [x] K91
B’ = B + K92
C’ = C + K93
D’ = D [x] K94

Шифртекст являє собою результат конкатенації отриманих значень A’, B’, C’, D’.
Операція розшифрування аналогічна зашифрованию, з тією різницею, що при расшифровании використовуються модифіковані підключи і в іншій послідовності:
K’s r1 = (K(10-r)1)-1
K’s r2 = -K(10-r)3
K’s r3 = -K(10-r)2
K’s r4 = (K(10-r)4)-1
K’s r5 = K(9-r)5
K’s r6 = K(9-r)6,

за винятком раундів 1 і 9, у яких підключи K’s r2 і K’s r3 міняються місцями. Тут K’s rn — підключ n раунду розшифрування r, x x-1 — зворотні значення x щодо описаних вище операцій додавання по модулю 2{у 16-й ступеня} і множення по модулю (2^16 + 1) відповідно. При цьому 0^1 = 0.

[Закінчення]
Я не прагнув розповісти про всіх методах шифрування, їх дуже багато. Я висвітлив лише найпоширеніші з них.