ю укорочений раунд lt;http://ru.wikipedia/wiki/%D0%A0%D0%B0%D1%83%D0%BD%D0%B4_%28%D0%B2_%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%BE%D0%B3%D1%80%D0%B0%D1%84%D0%B8%D0%B8%29gt;, а саме, чотири 16-бітних подблока на виході восьмого раунду lt;http://ru.wikipedia/wiki/%D0%A0%D0%B0%D1%83%D0%BD%D0%B4_%28%D0%B2_%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%BE%D0%B3%D1%80%D0%B0%D1%84%D0%B8%D0%B8%29gt; і чотири відповідних підключа піддаються описаним операціями.
Потім береться наступний 64-бітний блок незашифрованого тексту і алгоритм шифрування повторюється. Так продовжується до тих пір, поки не зашифрують всі 64-бітові блоки вихідного тексту.
Зашифроване повідомлення користувач побачить після успішної авторизації.
Метод обчислення, що використовується для розшифровки тексту по суті такий же, як і при його шифруванні. Єдина відмінність полягає в тому, що для розшифровки використовуються інші підключи. У процесі розшифровки підключи повинні використовуватися в зворотному порядку. Перший і четвертий підключи i-го раунду розшифровки виходять з першого і четвертого підключа (10-i) -го раунду шифрування мультиплікативної інверсією. Для 1-го і 9-го раундів другий і третій підключи розшифровки виходять з другого і третього підключів 9-го і 1-го раундів шифрування адитивної інверсією. Для раундів з 2-го по 8-й другий і третій підключи розшифровки виходять з третього і другого підключів з 8-го по 2-й раундів шифрування адитивної інверсією. Останні два підключа i-го раунду розшифровки рівні останнім двом підключити (9-i) -го раунду шифрування.
розшифрувати повідомлення користувач побачить після успішного заповнення форми авторизації, при правильно введеному логін та пароль.
Рис. 5. Структура алгоритму IDEA
Рис. 6. Підключи шифрування і дешифрування алгоритму IDEA
2.3 Програмна реалізація
Курсова робота реалізована в середовищі програмування Microsoft Visual Studio 2012. Мова програмування, який використовувався при написанні роботи - C #.
Список основних процедур - обробників, в яких закладено функціонал розробляється програми:
· public static int idea_hash_cbс (char * s, int len, int k, int iv) функція обчислення хеша CB С. У даній функції ми отримуємо поточне значення для XOR'а (iv), створюємо покажчик на масив хешіруемих даних, ділимо розмір масиву на 8 (робимо перевірку на кратність 8), шифруємо за формулою: C (i)=IDEA (C (i - 1) ^ S (i), KEY), і повертаємо отриманий хеш.
· private static string ShiftByteLeft (string s) зрушення на 25 бітів циклічно вліво
· private static string ShiftbyteRight (string s) зрушення на 25 бітів циклічно вправо
· private static string Sum (string a1, string a2) підсумовування по модулю 2 ^ 16
· private static string Multi (string a1, string a2) множення по модулю 2 ^ 16 + 1 private static string XOR (string a1, string a2) виключає АБО
· inline T setBit (T v, int nBitNumber) функція установки біта. Біти вважаються від 0, нумерація йде зліва-направо.
· inline bool getBit (T v, int nBitNumber) функція отримання значення біта (true/false).
· map lt; int64, vector lt; int64 gt; * gt; keys_archive; архів таблиць раундових ключів, щоб кожного разу не генерувати ключі заново (функція включає в себе: початкову перестановку ключа, кінцеву перестановку ключа, зрушення, таблицю підстановок). private void idea_Encryption (string st1, string st2) алгоритм IDEA. Вхід - 2 рядки: 1) набір бітів ліченого блоку (довжина 64). 2) набір бітів нашого ключа (довжина 128). Вихід - шіфроблок (64 символу) public string idea_Decryption (string st1, string st2) функція дешифрування за алгоритмом IDEA.
· bool CheckLogin (int hash) функція читає логін, якщо хеш з аргументів дорівнює вважає логіну, то закриває файл і видає позитивний результат. Якщо ні - видає повідомлення «Невірний логін»
· bool CheckPass (int login_hash, int pass_hash) функція читає логін і пароль, якщо логін дорівнює запрошенням, але пароль не збігається, то закриває файл і видає повідомлення «Невірний пароль». Якщо логін і пароль збігаються, то функція повертає «істин а».
Програма складається з трьох форм: форма реєстрації (рис. 7.), форма авторизації (рис.8.) і форма з виведенням зашифрованого і розшифрованого тексту (рис. 9.). Дані форми представлені нижче.
Рис. 7. Форма авторизації
програмний блоковий шифрування аутентифікація
Рис.8. Форма Реєстрації
Рис.9. Форма виведення інф...