C0
|
D0
|
Пари частково-слабких
ключів
|
C0
|
D0
|
[01]14
|
[01]14
|
01FE-01FE-01FE-01FE,----FE01-FE01-FE01-FE01
|
[10]14
|
[10]14
|
[01]14
|
[01]14
|
1FE0-1FE0-1FE0-1FE0,----E0F1-E0F1-E0F1-E0F1
|
[10]14
|
[10]14
|
[01]14
|
[0]28
|
01E0-01E0-01F1-01F1,----E001-E001-F101-F101
|
[10]14
|
[0]28
|
[01]14
|
[1]28
|
1FFE-1FFE-0EFE-0EFE,----FE1F-FE1F-FE0E-FE0E
|
[0]28
|
[1]28
|
[0]28
|
[01]14
|
O11F-011F-010E-010E,----1F01-1F01-0E01-0E01
|
[0]28
|
[10]14
|
[1]28
|
[01]14
|
E0FE-E0FE-F1FE-F1FE,----FEE0-FEE0-FEF1-FEF1
|
[1]28
|
[10]14
|
Таблиця 3.11 Методи атаки
Методи атаки
|
Відомі відкр. тексти
|
Вибрані відкр. тексти
|
Об'єм пам'яті
|
Кількість операцій
|
Повний пошук
|
1
|
-
|
Незначний
|
255
|
Лінійний Криптоаналіз
|
243(85%)
|
-
|
Для тексту
|
243
|
Лінійний Криптоанализ
|
238(10%)
|
-
|
Для тексту
|
250
|
Диффер. Криптоанализ
|
-
|
247
|
Для тексту
|
247
|
Диффер. Криптоанализ
|
255
|
-
|
Для тексту
|
255
|
• Метод повного пошуку вимагає одну відому пару шифрованого і
розшифрованого тексту, незначний обсяг пам'яті, і для його виконання потрібні
255 кроків.
• Диференціальний криптоаналіз - першу таку атаку на DES заявили Biham і
Shamir. Ця атака вимагає шифрування 247 відкритих текстів обраних нападаючим, і
для її виконання потрібні 247 кроків. Теоретично будучи крапкою розриву, ця
атака непрактична через надмірні вимоги до підбору даних і складності
організації атаки по обраному відкритому тексту. Самі автори цієї атаки Biham і
Shamir заявили, що вважають DES захищеним для такої атаки.
• Лінійний криптоаналіз розроблений Matsui. Цей метод дозволяє відновити
ключ DES з допомогою аналізу 243 відомих відкритих текстів, при цьому потрібно
243 кроків для виконання. Перший експериментальний криптоаналіз DES, заснований
на відкритті Matsui, був успішно виконаний протягом 50 днів на автоматизованих
робочих місцях 12 HP 9735.
Для лінійної та диференціальної атак потрібно досить великий обсяг пам'яті
для збереження вибраних (відомих) відкритих текстів до початку атак.
3.2.11 Застосування
DES був національним стандартом США в 1977-1980 рр.., але в даний час DES
використовується (з ключем довжиною 56 біт) тільки для застарілих систем ,
найчастіше використовують його більш кріптостійкий вигляд (3DES, 2DES). 3DES є
простою ефективною заміною DES , і зараз він розглянутий як стандарт.
Найближчим часом DES і Triple DES будуть замінені алгоритмом AES (Advanced
Encryption Standard - розширений стандарт шифрування). Алгоритм DES широко
застосовується для захисту фінансової інформації: так, модуль THALES (Racal)
HSM RG7000 повністю підтримує операції TripleDES для емісії і обробки кредитних
карт VISA, EuroPay та ін. Канальні шифратори THALES (Racal) DataDryptor 2000
використовують TripleDES для прозорого шифрування потоків інформації. Також
алгогритм DES використовується в багатьох інших пристроях і рішеннях
THALES-eSECURITY.
3.3 Дослідження алгоритму RC2
це блочний шифр з ключем змінної довжини створений Роном Рівестом для
RSA. "RC" розшифровується як "Ron's Code" або "Rivest
Cipher". RC2 швидше ніж DES і був спецально розроблений для заміни DES.
Він може бути реалізований більш-менш захищеним ніж DES, залежно від довжини
ключа. RC2 алгоритм конфіденціален і є власністю RSA. RC2 може
використовуватися там, де використовується DES. У США довжина ключа для
використання всередині країни рекомендується рівний 128 бітів, але угода,
укладена між Software Publishers Association (SPA) і урядом США дає RC2
спеціальний статус, який означає, що дозволено експортувати шифри довгої ключа
до 40 біт. 56-бітові ключі дозволено використовувати закордонним відділенням
американських компаній. RC2 з ключами 128 біт забезпечує такий же рівень
безпеки як і IDEA або потрійний DES. RC2 використовується широко розробниками,
чиї продукти експортуються за межі США, оскільки експортувати DES заборонено.
3.3.1 Алгоритм RC2
RC2 складається з трьох частин: агорітм розширення ключа, алгоритм
шифрування, алгоритм розшифровки.
У тексті алгоритму використовуються наступні позначення:
. Порозрядному виключає АБО, позначення "^".
. Порозрядному І, позначення "&"
. Порозрядному НЕ, позначення "~".
. Операція>>> - циклічний зсув вправо x на y
. Операція <<<- циклічний зсув вліво x на y
Розширення ключа.
Спочатку створюється 256-байтовий S-блок кожен i-й елемент якого виходить
так:
[i] = Beale [i] mod 256 XOR pad [i],
де Beale [i] - елемент з шифру Beal (коду), pad [i] - елемент з шифру pad
(коду). Далі відбувається розширення ключа до 128 байтам, ключ розширюється
так, щоб заповнити 128 байтів (64 слова). При розширенні беруть суму першого і
останнього байта ключа, шукають суму (mod 256) в S-блоці і додають результат у
ключ. Операція повторюється з другим і останнім новим байтом поки ключ не буде
сформований до 128. (див. рис 3.14.)
Рис.3.14 Формування ключа
Спочатку i = 0, а j = lengh (K) (довжині ключа K)j = 0 to length-1 do[j]
= K [j]j = length to 127 do s [j] = sBox [(S [j-length] + S [j-1]) mod 256];
Останнім кроком змінюють перший байт ключа та байтом вибраним з
S-блоку.[0] = sBox [S [0]]
Шифрування.
Шифрування являє собою додавання до тексту сформованого ключа та
циклічного зсуву цієї суми. Шифр має 16 повних раундів, кожен розділений в 4
подраунда. Два з повних раундів виконують додаткове перетворення даних.i = 0 to
15 do j = i * 4;= (word0 + (word1 & ~ word3) + (word2 & word3) + S [j
+0]) <<<1= (word1 + (word2 & ~ word0) + (word3 & word0) + S [j
+1]) <<<2= (word2 + (word3 & ~ word1) + (word0 & word1) + S [j
+2]) <<<3= (word3 + (word0 & ~ word2) + (word1 & word2) + S [j
+3]) <<<5
Крім того п'яті і одинадцятий раунди додають зміст S-блоку, індексованої
одним з слів даних до іншого після чотирьох подраундов наступним чином:= word0
+ S [word3 & 63];= word1 + S [word0 & 63];= word2 + S [word1 &
63];= word3 + S [word2 & 63];
Розшифровка.
Операція розшифровки - просто інверсія операції шифрування.i = 15 downto
0 do j = i * 4;= (word3>>> 5) - (word0 & ~ word2) - (word1 &
word2) - S [j +3]= (word2>>> 3) - (word3 & ~ word1) - (word0 &
word1) - S [j +2]= (word1>>> 2) - (word2 & ~ word0) - (word3 &
word0) - S [j +1]= (word0>>> 1) - (word1 & ~ word3) - (word2 &
word3) - S [j +0]
Крім того п'яті і одинадцятий раунди віднімають утримання S-блоку,
індексованої одним з слів даних з іншого після чотирьох подраундов наступним
чином:= word3 - S [word2 & 63]= word2 - S [word1 & 63]= word1 - S
[word0 & 63]= word0 - S [word3 & 63]
У даному алгоритмі можливі неточності на увазі конфіденційності цього
алгоритму.
3.4 Дослідження алгоритму AES
Encryption Standard (AES), також відомий як Rijndael - симетричний
алгоритм блочного шифрування (розмір блока 128 біт, ключ 128/192/256 біт),
прийнятий в якості стандарту шифрування урядом США за результатами конкурсу
AES. Цей алгоритм добре проаналізовано і зараз широко використовується, як це
було з його попередником DES. Національний інститут стандартів і технологій США
(англ. National Institute of Standards and Technology, NIST) опублікував
специфікацію AES 26 листопада 2001 після п'ятирічного періоду, в ході якого
були створені і оцінені 15 кандидатур. 26 травня 2002 AES було оголошено
стандартом шифрування. За станом на 2006 рік AES є одним з найпоширеніших
алгоритмів симетричного шифрування.
3.4.1 Опис AES
Визначення і допоміжні процедури наведенні в таблиці 3.12.
Таблиця 3.12
Block
|
Cipher Key
|
секретний, криптографічний
ключ, який використовується Key Expansion процедурою, щоб справити набір
ключів для раундів (Round Keys); може бути представлений як прямокутний масив
байтів, що має чотири рядки і Nk колонок....
|
Ciphertext
|
вихідні дані алгоритму
шифрування
|
Key Expansion
|
процедура використовується
для генерації Round Keys з Cipher Key
|
Round Key
|
Round Keys виходять з
Cipher Key використовуючи процедуру Key Expansion. Вони застосовуються до
State при шифрування й розшифрування
|
State
|
проміжний результат
шифрування, який може бути представлений як прямокутний масив байтів має 4
рядки і Nb колонок
|
S-box
|
нелінійна таблиця замін, що
використовується в декількох трансформаціях заміни байт і в процедурі Key
Expansion для взаімнооднозначной заміни значення байта
|
Nb
|
число стовпців (32-ох
бітних слів), що становлять State. Для, AES Nb = 4
|
Nk
|
число 32-ох бітних слів,
складових шіфроключ. Для AES, Nk = 4,6, або 8
|
Nr
|
число раундів, яке є
функцією Nk і Nb. Для AES, Nr = 10, 12, 14
|
Rcon[]
|
масив, який складається з
бітів 32-х розрядного слова і є постійним для даного раунду
|
Допоможні процедури наведенні в таблиці 3.13.
Таблиця 3.13
AddRoundKey()
|
Трансформація при шифровані
і зворотнім шифровані, при якому Round Key XOR’ c State. Довжина RoundKey
дорівнює розміру ( якщо Nb = 4, то довжина RoundKey дорівнює 128 біт або 16
байт)
|
InvMixColumns()
|
Трансформація при
розшифровані яка стає оберненою по відношенню до MixColumns()
|
InvShiftRows()
|
Трансформація при
розшифровані яка стає оберненою по відношенню до ShiftRows()
|
InvSubBytes()
|
при розшифровані яка стає
оберненою по відношенню до SubBytes()
|
MixColumns()
|
Трансформація при шифровані
яка бере всі колонки State і змішує їх данні (незалежно друг от друга ) щоб
отримати нові колонки
|
RotWord()
|
Функція використана в
процедурі Key Expansion, яка бере 4-x байтове слово і виробляє над ним
циклічну перестановку
|
ShiftRows()
|
Трансформація при шифровані
яка обробляє State, циклічно змішуючи останні три рядки State на різні
величини.
|
SubBytes()
|
трансформації при
шифруванні які обробляють State використовуючи нелінійну таблицю заміщення
байтів (S-box), застосовуючи її незалежно до кожного байту State
|
SubWord()
|
функція, яка
використовується в процедурі Key Expansion, яка бере на вході
чотирьох-байтним слово і застосовуючи S-box до кожного з чотирьох байтів
видає вихідну слово
|
3.4.2 Шифрування
AES є стандартом, заснованим на алгоритмі Rijndael. Для AES довжина input
(блоку вхідних даних) і State (стану) є сталою і дорівнює 128 біт, а довжина
шіфроключа. K становить 128, 192, або 256 біт. При цьому, вихідний алгоритм
Rijndael допускає довжину ключа і розмір блоку від 128 до 256 біт з кроком в 32
біта. Для позначення вибраних довжин input, State і Cipher Key в байтах
використовується нотація Nb = 4 для input і State, Nk = 4, 6, 8 для Cipher Key
відповідно для різних довжин ключів.
На початку шифрування input копіюється в масив State за правилом s [r, c]
= in [r + 4c], для і . Після цього до State застосовується процедура AddRoundKey
() і потім State проходить через процедуру трансформації (раунд) 10, 12, або 14
разів (залежно від довжини ключа), при цьому треба врахувати, що останній раунд
дещо відрізняється від попередніх. У результаті, після завершення останнього
раунду трансформації, State копіюється в output за правилом out [r + 4c] = s
[r, c], для і .
Окремі трансформації SubBytes (), ShiftRows (), MixColumns (), і
AddRoundKey () - обробляють State. Масив w [] - містить key schedule.
SubBytes().
</wiki/%D0%A4%D0%B0%D0%B9%D0%BB:AES-SubBytes.svg>
Рис
3.15 Процедура SubBytes
В
процедурі SubBytes, кожен байт в state вказується відповідний елементом у
фіксованій 8-бітної таблиці пошуку, S; bij = S (aij)
Процедура SubBytes () обробляє кожен байт стану, незалежно виробляючи
нелінійну заміну байтів використовуючи таблицю замін (S-box). Така операція
забезпечує нелінійність алгоритму шифрування. Побудова S-box складається з двох
кроків. По-перше, проводиться взяття зворотного числа в GF (28). По-друге, до
кожного байту b з яких складається S-box застосовується така операція:
, де і де bi є i-ий біт b, а c i - i-ий біт c = {63}або
{01100011}. Таким чином, забезпечується захист від атак, заснованих на простих
алгебраїчних властивостях.().
</wiki/%D0%A4%D0%B0%D0%B9%D0%BB:AES-ShiftRows.svg>
Рис
3.16 Процедура ShiftRows
В
процедурі ShiftRows, байти в кожному рядку state циклічно зсуваються ліворуч.
Розмір зміщення байтів кожного рядка залежить від її номера.працює з рядками
State. При цій трансформації рядка стану циклічно зсуваються на r байт по
горизонталі, залежно від номера рядка. Для нульової рядка r = 0, для першого
рядка r = 1б і тд .. Таким чином кожна колонка вихідного стану після
застосування процедури ShiftRows складається з байтів з кожної колонки
початкового стану. Для алгоритму Rijndael патерн зміщення рядків для 128 і
192-ох бітних рядків однаковий. Однак для блоку розміром 256 біт відрізняється
від попередніх тим, що 2, 3, і 4-е рядка зміщуються на 1, 3, і 4 байта
відповідно.().
</wiki/%D0%A4%D0%B0%D0%B9%D0%BB:AES-MixColumns.svg>
Рис
3.17 Процедура MixColumns
В
процедурі MixColumns, кожна колонка стану перемножується з фіксованим
многочленом c (x).
У
процедурі MixColumns, чотири байти кожної колонки State змішуються
використовуючи для цього оборотну лінійну трансформацію. MixColumns обробляє
стану по стовпчиках, трактуючи кожну з них як поліном четвертого ступеня. Над
цими поліномами проводиться множення в GF (28) по модулю x4 + 1 на фіксований
многочлен c (x) = 3x3 + x2 + x + 2. Разом з ShiftRows, MixColumns вносить
дифузію у шифр.
AddRoundKey().
У процедурі AddRoundKey, кожен байт стану об'єднується з RoundKey
використовуючи XOR operation (⊕).
У процедурі AddRoundKey, RoundKey кожного раунду об'єднується з State.
Для кожного раунду Roundkey виходить з CipherKey використовуючи процедуру
KeyExpansion, кожен RoundKey такого ж розміру, що і State. Процедура виробляє
побітового XOR кожного байта State з кожним байтом RoundKey.
KeyExpansion().алгоритм, використовуючи процедуру KeyExpansion () і
подаючи в неї Cipher Key, K, отримує ключі для всіх раундів. Всього вона отримує
Nb * (Nr + 1) слів: спочатку для алгоритму потрібно набір з Nb слів, і кожному
з Nr раундів потрібно Nb ключових набору даних. Отриманий масив ключів для
раундів обзначается як w [i],
(3.12)
Функція SubWord () бере четирехбайтовое вхідний слово і застосовує S-box
до кожного з чотирьох байтів те, що вийшло подається на вихід. На вхід RotWord
() подається слово [a0, a1, a2, a3] яке вона циклічно переставляє і повертає
[a1, a2, a3, a0]. Масив слів, слів постійна для даного раунду, Rcon [i],
містить значення [xi - 1,00,00,00], де x = (02), а xi - 1 є ступенем x в GF (2
^ 8) ( i починається з 1).
Можна побачити, що перші Nk слів розширеної ключа заповнені Cipher Key. У
кожне наступне слово, w [i], кладеться значення отримане при операціїw [i-1] і
w [i - Nk], ті XOR'а попереднього і на Nk позицій раніше слів. Для слів,
позиція яких кратна Nk, перед XOR'ом до w [i-1] застосовується трасформації, за
якою слідує XOR з константою раунду Rcon [i]. Зазначена вище трансформація складається
з циклічного зсуву байтів в слові (RotWord ()), за якою слідує процедура
SubWord () - те ж саме, що й SubBytes (), тільки вхідні і вхідні дані будуть
розміром в слово.
Важливо зауважити, що процедура KeyExpansion () для 256 бітного Cipher
Key трохи відрізняється від тих, які застосовуються для 128 і 192 бітних
шіфроключей. Якщо Nk = 8 і i - 4 кратно Nk, то SubWord () застосовується до w
[i-1] до XOR'а.
3.5 Дослідження алгоритму RIPEMD-160
(від англ. RACE Integrity Primitives Evaluation Message Digest) -
хеш-функція, розроблена в Лувенського католицькому університеті Гансом
Добертіном (Hans Dobbertin), Антуном Босселаерсом (Antoon Bosselaers) і Бартом
Пренелем (Bart Preneel). Для довільного вхідного повідомлення функція генерує
160-розрядне хеш-значення, зване дайджестом повідомлення. RIPEMD-160 є
вдосконаленою версією RIPEMD, яка, у свою чергу, використовувала принципи MD4 і
по продуктивності порівнянна з більш популярною SHA-1. Також існують 128 -, 256
- і 320-бітні версії цього алгоритму, які, відповідно, називаються RIPEMD-128,
RIPEMD-256 і RIPEMD-320. 128-бітна версія являє собою лише від'єднуйте RIPEMD,
яка також була 128-бітної і в якій були знайдені вразливості [1]. 256 - і
320-бітні версії відрізняються подвоєною довжиною дайджесту, що зменшує
ймовірність колізій, але при цьому функції не повинні бути більш
криптостійкому. RIPEMD-160 була розроблена у відкритому академічному
співтоваристві, на відміну від SHA, які були створені NSA. З іншого боку,
RIPEMD-160 на практиці використовується дещо рідше, ніж SHA-1. Можливо, це
обумовлено найгіршою структуризацією RIPEMD-160.Іспользованіе RIPEMD-160 не
обмежений будь-якими патентами.
3.5.1 Реалізація RIPEMD-160
Крок 1. Додавання відсутніх бітів.
Повідомлення розширюється так, щоб його довжина в бітах за модулем 512
дорівнювала 448. Таким чином, в результаті розширення, повідомленням бракує 64
біта до довжини, кратної 512 бітам. Розширення проводиться завжди, навіть якщо
повідомлення споконвічно має потрібну довжину.
Розширення проводиться таким чином: один біт, що дорівнює 1, додається до
повідомлення, а потім додаються біти, рівні 0, до тих пір, поки довжина
повідомлення не стане рівною 448 по модулю 512. У результаті, до повідомлення
додається як мінімум 1 біт, і як максимум 512.
Крок 2. Додавання довжини повідомлення.
-бітне подання b (довжини повідомлення перед додаванням набитих бітів)
додається до результату попереднього кроку. У малоймовірному випадку, коли
bбольше, ніж 264, використовуються тільки 64 молодших біта. Ці біти додаються у
вигляді двох 32-бітових слів, і першим додається слово, що містить молодші
розряди.
На цьому етапі (після додавання бітів і довжини повідомлення) ми
отримуємо повідомлення довжиною кратною 512 бітам. Це еквівалентно тому, що це
повідомлення має довжину, кратну 16-ти 32-бітним словами. Кожне 32-бітне слово
містить чотири 8-бітових, але випливають вони не підряд, а навпаки (наприклад,
з восьми 8-бітових слів (abcdefgh) ми отримуємо два 32-бітних слова (dcba
hgfe)).
Крок 3. Визначення діючих функцій і констант. Нелінійні побітового
функції:
(3.13)
(3.14)
(3.15)
(3.16)
(3.17)
.
Додаються шістнадцяткові константи:
(j) = 00000000x (0 ≤ j ≤ 15)(j) = 5A827999x (16 ≤ j ≤
31)(j) = 6ED9EBA1x (32 ≤ j ≤ 47)(j) = 8F1BBCDCx (48 ≤ j ≤
63)(j) = A953FD4Ex (64 ≤ j ≤ 79)'(j) = 50A28BE6x (0 ≤ j ≤
15)'(j) = 5C4DD124x (16 ≤ j ≤ 31)'(j) = 6D703EF3x (32 ≤ j ≤
47)'(j) = 7A6D76E9x (48 ≤ j ≤ 63)'(j) = 00000000x (64 ≤ j ≤
79)
. Вибір 32-бітних слів з повідомлення
(j) = j при (0 ≤ j ≤ 15) (3.18)(16..31) = 7; 4; 13; 1; 10; 6;
15; 3; 12; 0; 9; 5; 2; 14; 11; 8(32..47) = 3; 10; 14; 4; 9; 15; 8; 1; 2; 7; 0;
6; 13; 11; 5; 12(48..63) = 1; 9; 11; 10; 0; 8; 12; 4; 13; 3; 7; 15; 14; 5; 6;
2(64..79) = 4; 0; 5; 9; 7; 12; 2; 10; 14; 1; 3; 8; 11; 6; 15; 13'(0..15) = 5;
14; 7; 0; 9; 2; 11; 4; 13; 6; 15; 8; 1; 10; 3; 12'(16..31) = 6; 11; 3; 7; 0;
13; 5; 10; 14; 15; 8; 12; 4; 9; 1; 2'(32..47) = 15; 5; 1; 3; 7; 14; 6; 9; 11;
8; 12; 2; 10; 0; 4; 13'(48..63) = 8; 6; 4; 1; 3; 11; 15; 0; 5; 12; 2; 13; 9; 7;
10; 14'(64..79) = 12; 15; 10; 4; 1; 5; 8; 7; 6; 2; 13; 14; 0; 3; 9; 11
. Набір для бітового повороту ліворуч (операція rol)
(0..15) = 11; 14; 15; 12; 5; 8; 7; 9; 11; 13; 14; 15; 6; 7; 9; 8(16..31)
= 7; 6; 8; 13; 11; 9; 7; 15; 7; 12; 15; 9; 11; 7; 13; 12(32..47) = 11; 13; 6;
7; 14; 9; 13; 15; 14; 8; 13; 6; 5; 12; 7; 5(48..63) = 11; 12; 14; 15; 14; 15;
9; 8; 9; 14; 5; 6; 8; 6; 5; 12(64..79) = 9; 15; 5; 11; 6; 8; 13; 12; 5; 12; 13;
14; 11; 8; 5; 6'(0..15) = 8; 9; 9; 11; 13; 15; 15; 5; 7; 7; 8; 11; 14; 14; 12;
6'(16..31) = 9; 13; 15; 7; 12; 8; 9; 11; 7; 7; 12; 7; 6; 15; 13; 11'(32..47) =
9; 7; 15; 11; 8; 6; 6; 14; 12; 13; 5; 14; 13; 13; 7; 5'(48..63) = 15; 5; 8; 11;
14; 14; 6; 14; 6; 9; 12; 9; 12; 5; 15; 8'(64..79) = 8; 5; 12; 9; 12; 5; 14; 6;
8; 13; 6; 5; 15; 13; 11; 11
. Вихідні значення слів дайджесту
= 67452301x;= EFCDAB89x;= 98BADCFEx;= 10325476x;= C3D2E1F0x;
Крок 4. Виконання алгоритму хешування
Після завдання всіх вихідних функцій, констант і початкових значень слів
хеш-суми можна переходити до виконання алгоритму. Виконання алгоритму
відбувається у двох паралельних шляхах. Обробка повідомлення відбувається
блоками по 16 слів в 32 біта.
3.5.2 RIPEMD-160 на псевдокоді
Під складанням «+» мається на увазі складання по модулю 232, rols
позначає циклічний зсув вліво на s позицій.
i:=0 to t-1 {:= h0; B := h1; C := h2; D = h3; E = h4;' := h0; B' := h1;
C' := h2; D' = h3; E' = h4;j := 0 to 79 {:= rols(j) (A + f(j;B;C;D) + Xi[r(j)]
+ K(j)) + E;:= E; E := D; D := rol10(C); C := B; B := T;:= rols'(j) (A' + f(79
- j;B';C';D') + Xi[r'(j)] + K'(j)) E';' := E'; E' := D'; D' := rol10(C'); C' :=
B'; B' := T;}:= h1 + C + D'; h1 := h2 + D + E'; h2 := h3 + E + A';:= h4 + A +
B'; h4 := h0 + B + C'; h0 := T;}
3.5.3 Приклади хешів RIPEMD-160
Вхідна рядок складається з ASCII-символів. Вихідна рядок являє собою
шістнадцятковий запис.("The quick brown fox jumps over the lazy dog")
=
f332f68db77bd9d7edd4969571ad671cf9dd3b
Навіть маленьке зміна повідомлення викликає значну зміну дайджесту.
Наприклад, ми замінимо в наведеному вище прикладі d на c:("The quick brown
fox jumps over the lazy cog") =
df690933835eb8b6ad0b77e7b6f14acad7
Хеш-сума нульової рядка виглядає так:("") =
c1185a5c5e9fc54612808977ee8f548b2258d31
3.5.4 Продуктивність
У таблиці 3.14 для порівняння наведені швидкості виконання MD4-подібних
функцій. Передбачається, що код виконання і даних знаходяться в кеші
виконуючого пристрою.
Таблиця 3.14
Алгоритм
|
Циклів
|
Мбіт/сек
|
Відносна продуктивність
|
MD4
|
241
|
191.2
|
1.00
|
MD5
|
337
|
136.7
|
0.72
|
RIPEMD
|
480
|
96.0
|
0.50
|
RIPEMD-128
|
592
|
77.8
|
0.41
|
SHA-1
|
837
|
55.1
|
0.29
|
RIPEMD-160
|
1013
|
45.5
|
0.2
|
3.6 Дослідження алгоритму SHA-2
(англ. Secure Hash Algorithm Version 2 - безпечний алгоритм хешування,
версія 2) - збірна назва односпрямованим хеш-функцій SHA-224, SHA-256, SHA-384
і SHA-512. Хеш-функції призначені для створення «відбитків» або «дайджестів»
повідомлень довільної бітової довжини. Застосовуються в різних додатках або
компонентах, пов'язаних із захистом інформації.
3.6.1 Історія SHA-2
Хеш-функції SHA-2 розроблені Агентством національної безпеки США і
опубліковані Національним інститутом стандартів і технологій у федеральному
стандарті обробки інформації FIPS PUB 180-2 в серпні 2002 року. В цей стандарт
також увійшла хеш-функція SHA-1, розроблена в 1995 році. У лютому 2004 року в
FIPS PUB 180-2 була додана SHA-224. У жовтні 2008 року вийшла нова редакція
стандарту - FIPS PUB 180-3.
У липні 2006 року з'явився стандарт RFC 4634 «Безпечні хеш-алгоритми США
(SHA і HMAC-SHA)», що описує SHA-1 і сімейство SHA-2.
Агентство національної безпеки від імені держави випустило патент на
SHA-2 під ліцензією Royalty Free.
3.6.2 Алгоритм SHA-2
</wiki/%D0%A4%D0%B0%D0%B9%D0%BB:SHA-2.svg>
Рис
3.18 Схема однієї ітерації алгоритмів SHA-2
Хеш-функції
сімейства SHA-2 побудовані на основі структури Меркле - Дамгарда (англ.).
Вихідне
повідомлення після додатки розбивається на блоки, кожен блок - на 8 слів.
Алгоритм пропускає кожен блок повідомлення через цикл з 64-мя або 80-у ітерації
(раундами). На кожній ітерації 2 слова з восьми перетворюються, функцію
перетворення задають інші слова. Результати обробки кожного блоку складаються,
сума є значенням хеш-функції. Алгоритм використовує наступні бітові операції:
ǁ
- конкатенація,
+
- Додавання,- бітових,- бітових АБО »,- Виключне «АБО»,- Логічний зсув вправо,-
Циклічний зсув вправо.
У
наступній таблиці 3.15 показані деякі технічні характеристики різних варіантів
SHA-2. «Внутрішній стан» означає проміжну хеш-суму після обробки чергового
блоку даних:
Таблиця
3.15
Хеш-функція
|
Довжина дайджесту
повідомлення (біт)
|
Довжина внутрішнього стану
(біт)
|
Довжина блоку (біт)
|
Максимальна довжина
повідомлення (біт)
|
Довжина слова (біт)
|
Кількість інтераций в циклі
|
SHA-256/224
|
256/224
|
256
|
512
|
264 − 1
|
32
|
64
|
SHA-512/384
|
512/384
|
512
|
1024
|
2128 − 1
|
64
|
80
|
3.6.3 Приклади SHA-2.
Нижче наведені приклади хешів SHA-2. Для всіх повідомлень мається на
увазі використання кодування ASCII.("The quick brown fox jumps over the
lazy dog")
= 730E109B D7A8A32B 1CB9D9A0 9AA2325D 2430587D DBC0C38B
AD911525("The quick brown fox jumps over the lazy dog")
= D7A8FBB3 07D78094 69CA9ABC B0082E4F 8D5651E4 6D3CDB76 2D02D0BF
37C9E592("The quick brown fox jumps over the lazy dog")
= CA737F10 14A48F4C 0B6DD43C B177B0AF D9E51693 67544C49 4011E331 7DBF9A50
CB1E5DC 1E85A941 BBEE3D7F 2AFBC9B1("The quick brown fox jumps over
the lazy dog")
= 07E547D9 586F6A73 F73FBAC0 435ED769 51218FB7 D0C8D788 A309D785 436BBB64
E93A252 A954F239 12547D1E 8A3B5ED6 E1BFD709 7821233F A0538F3D B854FEE6
Найменша зміна повідомлення в переважній більшості випадків призводить до
зовсім іншому хешу внаслідок лавинного ефекту. Приміром, при зміні dog на cog
вийде:("The quick brown fox jumps over the lazy cog")
= E4C4D8F3 BF76B692 DE791A17 3E053211 50F7A345 B46484FE 427F6ACC 7ECC81BE
3.6.4 Криптоаналіз SHA-2
На 2008 рік хеш-функції SHA-2, на відміну від SHA-1, недостатньо вивчені.
У 2003 році Гілберт і Хандшух провели дослідження SHA-2, але не знайшли
будь-яких вразливостей.
Криптоаналіз хеш-функції має на увазі дослідження стійкості алгоритму по
відношенню, щонайменше, до наступних видів атак:
· знаходження колізій, тобто різних повідомлень з однаковим хешем.
· знаходження прообразу, тобто невідомого повідомлення по його
хешу.
Від стійкості хеш-функції до знаходження колізій залежить безпека
електронного цифрового підпису з використанням даного хеш-алгоритму. Від стійкості
до знаходження прообразу залежить безпека зберігання хешів паролів для цілей
аутентифікації.
У березні 2008 року індійські дослідники Сомітра Кумар Санада і Палаш
Саркар опублікували знайдені ними колізії для 22 ітерацій SHA-256 і SHA-512. У
вересні того ж року вони представили метод конструювання колізій для зрізаних
варіантів SHA-2 (21 ітерація).
Зважаючи на алгоритмічної схожості SHA-2 з SHA-1 і наявності в останньої
потенційних вразливостей ведуться пошуки поліпшених альтернатив. Новий стандарт
буде названий SHA-3, він буде визначений конкурсом, проведеним Національним
інститутом стандартів і технологій в 2008-2012 рр..
3.6.5 Застосування та сертифікація
SHA-224, SHA-256, SHA-384 і SHA-512 закону США допускаються до
використання в деяких урядових програмах, включаючи використання в рамках інших
криптографічних алгоритмів та протоколів, для захисту інформації, яка не має
грифа секретності. Стандарт також допускає використання SHA-2 приватними і
комерційними організаціями.
Хеш-функції SHA-2 використовуються для перевірки цілісності даних і в
різних криптографічних схемах. На 2008 рік сімейство хеш-функцій SHA-2 не має
такого широкого розповсюдження, як MD5 і SHA-1, незважаючи на виявлені в
останніх недоліки.
Деякі приклади застосування SHA-2 зазначено в таблиці 3.16:
Таблиця 3.16
Область використання
|
Деталі
|
S/MIME
</wiki/S/MIME>SHA-224, SHA-256, SHA-384 или SHA-512 дайджести
повідомлень
|
|
OpenLDAP
</wiki/OpenLDAP>SHA-256, SHA-384 или SHA-512 хеши паролів
|
|
DNSSEC
</wiki/DNSSEC>SHA-256 дайджести DNSKEY в протоколі DNSSEC
|
|
X.509
</wiki/X.509>SHA-224, SHA-256, SHA-384 и SHA-512 використовуються для
створення електронного цифрового підпису сертифікату
|
|
PGP
</wiki/PGP>SHA-256, SHA-384, SHA-512 використовуються для створення
електронного цифрового підпису
|
|
IPSec
</wiki/IPSec>Деякі реалізації підтримують SHA-256 в протоколах ESP
</w/index.php?title=Encapsulating_Security_Payload&action=edit&redlink=1>
и IKE </wiki/IKE>
|
|
DSA
</wiki/DSA>Сімейство SHA-2 використовується для створення електронного
цифрового підпису
|
|
SHACAL-2
</wiki/SHACAL-2>Блочний алгоритм шифрування SHACAL-2 побудований на
основі хеш-функції SHA-256
|
|
Передача файлів
|
Для надійності передачі
файлів по мережі іноді вказуються їх SHA-2 дайджести
|
Як показали дослідження, алгоритми SHA-2 працюють в 2-3 рази повільніше
інших популярних хеш-алгоритмів MD5, SHA-1, Tiger і RIPEMD-160.
4. ОПИС
ФУНКЦІОНАЛЬНИХ МОЖЛИВОСТЕЙ ТА ПРОГРАМНОЇ РЕАЛІЗАЦІЇ ПРОЕКТОВАНОЇ СИСТЕМИ
4.1 Функціональне призначення та технологічні особливості розробки
Метою дипломної роботи є дослідження та проведення порівняльного аналізу
алгоритмів кодування даних і створення системи аналізу властивостей алгоритмів
кодування даних на прикладі конкретних даних. Мінімальний склад технічних
засобів, при яких працює система:
· IBM-сумісний комп'ютер, не нижче Pentium IІ, RAM-128Mb,
SVGA-800*600*16bit;
· Вільний простір на жорсткому диску не менш 4 Мб.
Система повинна функціонувати під керуванням
операційної системи Windows ХР, 7.
Розроблена система була протестована на 3 файлах
малого, середнього та великого розміру.
4.2 Логіко-функціональна схема роботи системи
В загальному вигляді логіко-функціональну роботи
системи можна представити наступним чином (рис. 4.1).
На рис. 4.1 представлена схема технологічного процесу
виробництва.
Все починається з запуску системи. Після запуску
системи можливо провести аналіз алгоритмів кодування даних, але можливо і не
проводити аналіз і відразу кодувати файл потрібним алгоритмом.
Після кодування файлу систему можливо закрити.
Декодування файлу можливо проводити, як до аналізу
властивостей алгоритмів кодування даних, так і після аналізу властивостей
алгоритмів кодування даних.
Вибір алгоритму кодування даних проводить людина
оперуючись властивостями алгоритмів, які видала система.
Рис. 4.1 Логіко-функціональна схема роботи системи
На рис. 4.2 представлена логіко-функціональна схема
кодування файлу.
Рис. 4.2 Логіко-функціональна схема кодування файлу
При кодуванні файлу спочатку треба згенерувати новий
ключ. Потім ключ зберігається у файл. Після цього відкривається файл для
кодування, потім він кодується і зберігається у файл.
На рис. 4.3 представлена логіко-функціональна схема
декодування файлу.
Рис. 4.3 Логіко-функціональна схема декодування файлу
При декодуванні файлу спочатку треба відкрити файл з
ключем. Після цього відкривається шифрований файл для декодування, потім він
декодується і зберігається.
4.3 Програмна реалізація основних процедур системи
На рис. 4.4 наведено загальний вид головної форми
системи на етапі проектування. Для проектування інтерфейсу користувача системи
використовувалися наступні компоненти: menuStrip (для відображення для
відображення пунктів меню), progressBar(для відображення стану процесу
кодування), OpenFileDialog (для реалізації діалогового вікна відкриття файлу),
Командні компоненти Label (для відображення інформації на формі).
Рис. 4.4 Загальний вид головної форми системи на етапі
проектування
Наведемо опис основних фрагментів програмного коду, що
реалізує функції системи.
При виборі пункту меню «Закодувати» відобразиться
діалогове вікно для вибору файлу. Потім після натисканні кнопки «ОК», система
по черзі буде кодувати обраний файл 6 алгоритмами. Після завершення кодування,
кожним алгоритмом, відобразиться властивості алгоритмів на які треба звертати
увагу при виборі алгоритму. Для реалізації цієї можливості ми написали код.
//якщо натиснута кнопка «ОК» у діалоговому вікні, то виконується
кодування(openFileDialog1.ShowDialog()==DialogResult.OK)
{
//значеня для progressBar1 встановлюється в 1..Value = 1;
//створюемо новий екземпляр класу tdestdesf = new tdes();
//значеня для progressBar1 встановлюється в 2..Value = 2;
//збереження теперішнього часу= DateTime.Now;
//кодування файлу.Encrypt(openFileDialog1.FileName,
openFileDialog1.FileName + "tdes");.Text = (DateTime.Now -
tim).ToString();
//значеня для progressBar1 встановлюється в 3.Value = 3;.Text =
tdes.keysize.ToString();
//значеня для progressBar1 встановлюється в 4.Value = 4;.Text =
tdes.output.ToString();.Value = 5;.Dispose();
//значеня для progressBar2 встановлюється в 1..Value = 1;desf = new
des();
//значеня для progressBar2 встановлюється в 2..Value = 2;= DateTime.Now;
//кодування файлу.Encrypt(openFileDialog1.FileName,
openFileDialog1.FileName + "des");.Text = (DateTime.Now -
tim).ToString();
//значеня для progressBar2 встановлюється в 3.Value = 3;.Text =
des.keysize.ToString();
//значеня для progressBar2 встановлюється в 4.Value = 4;.Text =
des.output.ToString();.Value = 5;.Dispose();
//значеня для progressBar3 встановлюється в 1..Value = 1;rc2f = new
rc2();
//значеня для progressBar3 встановлюється в 2..Value = 2;= DateTime.Now;
//кодування файлуf.Encrypt(openFileDialog1.FileName,
openFileDialog1.FileName + "rc2");.Text = (DateTime.Now -
tim).ToString();
//значеня для progressBar3 встановлюється в 3.Value = 3;.Text =
rc2.keysize.ToString();.Value = 4;.Text = rc2.output.ToString();.Value =
5;f.Dispose();
//значеня для progressBar4 встановлюється в 1..Value = 1;rijf = new
Rijnder();
//значеня для progressBar4 встановлюється в 2..Value = 2;= DateTime.Now;
//кодування файлу.Encrypt(openFileDialog1.FileName,
openFileDialog1.FileName + "rij");.Text = (DateTime.Now - tim).ToString();
//значеня для progressBar4 встановлюється в 3.Value = 3;.Text =
Rijnder.keysize.ToString();.Value = 4;.Text = Rijnder.output.ToString();.Value
= 5;.Dispose();
//значеня для progressBar5 встановлюється в 1..Value = 1;ripf = new
RIPEMD160();
//значеня для progressBar5 встановлюється в 2..Value = 2;=
DateTime.Now;.Hash(openFileDialog1.FileName, openFileDialog1.FileName +
"rip");.Text = (DateTime.Now - tim).ToString();
//значеня для progressBar5 встановлюється в 3.Value = 3;.Text =
RIPEMD160.keysize.ToString();.Value = 4;.Text =
RIPEMD160.output.ToString();.Value = 5;.Dispose();
//значеня для progressBar6 встановлюється в 1..Value = 1;shaf = new
SHA512();
//значеня для progressBar6 встановлюється в 2..Value = 2;=
DateTime.Now;.Hash(openFileDialog1.FileName, openFileDialog1.FileName +
"sha");.Text = (DateTime.Now - tim).ToString();
//значеня для progressBar6 встановлюється в 3..Value = 3;.Text =
SHA512.keysize.ToString();.Value = 4;.Text = SHA512.output.ToString();.Value =
5;.Dispose();
}
Для кодування та декодування файлу алгоритмом
TripleDES в системі був створений клас tdes.
Основні функції якого приведенні нижче.
Функція для тестового кодування.
public void Encrypt(String inName, String outName)
{
//сворення файлового потоку для відкриття файлуfin = new
FileStream(inName, FileMode.Open, FileAccess.Read);
//сворення файлового потоку для запису файлуfout = new
FileStream(outName, FileMode.OpenOrCreate, FileAccess.Write);.SetLength(0);[]
bin = new byte[100];rdlen = 0;totlen = fin.Length;len;tdes = new
TripleDESCryptoServiceProvider();encStream = new CryptoStream(fout,
tdes.CreateEncryptor(), CryptoStreamMode.Write);= tdes.KeySize;(rdlen <
totlen)
{= fin.Read(bin, 0, 100);
//кодування потоку.Write(bin, 0, len);= rdlen + len;
}= fout.Length + tdes.Key.Length + tdes.IV.Length;.Close();
}
Функція для декодування.
private static void DecryptData(String inName, String outName, String
tdesKey, String tdesIV)
{[] key, IV;
//Створення файлових потоків для вхідного та вихідного файлів.fin = new
FileStream(inName, FileMode.Open, FileAccess.Read);fkey = new
FileStream(tdesKey, FileMode.Open, FileAccess.Read);fIV = new
FileStream(tdesIV, FileMode.Open, FileAccess.Read);fout = new
FileStream(outName, FileMode.OpenOrCreate, FileAccess.Write);.SetLength(0);=
new byte[fkey.Length];= new
byte[fIV.Length];.Read(key,0,(int)fkey.Length);.Read(IV, 0, (int)fIV.Length);
//Створення переміних для кодування.[] bin = new byte[100];rdlen = 0;
//Загальна кількість байт прочитано.totlen = fin.Length; //Довжина
файлу.len;tdes = new TripleDESCryptoServiceProvider();encStream = new
CryptoStream(fout, tdes.CreateDecryptor(key, IV), CryptoStreamMode.Write);=
tdes.KeySize;(rdlen < totlen)
{= fin.Read(bin, 0, 100);.Write(bin, 0, len);= rdlen + len;
}.Close();
}
Для кодування та декодування файлу алгоритмом DES в
системі був створений клас des.
Основні функції якого приведенні нижче.
Функція для тестового кодування.
public void Encrypt(String inName, String outName)
{fin = new FileStream(inName, FileMode.Open, FileAccess.Read);fout = new
FileStream(outName, FileMode.OpenOrCreate, FileAccess.Write);.SetLength(0);[]
bin = new byte[100];rdlen = 0;totlen = fin.Length;len;des = new
DESCryptoServiceProvider();encStream = new CryptoStream(fout,
des.CreateEncryptor(), CryptoStreamMode.Write);= des.KeySize;(rdlen <
totlen)
{= fin.Read(bin, 0, 100);.Write(bin, 0, len);= rdlen + len;
}= fout.Length + des.Key.Length + des.IV.Length;.Close();
}
Функція для декодування.
private static void DecryptData(String inName, String outName, String
desKey, String desIV)
{[] key, IV;
//Create the file streams to handle the input and output files.fin = new
FileStream(inName, FileMode.Open, FileAccess.Read);fkey = new FileStream(desKey,
FileMode.Open, FileAccess.Read);fIV = new FileStream(desIV, FileMode.Open,
FileAccess.Read);fout = new FileStream(outName, FileMode.OpenOrCreate,
FileAccess.Write);.SetLength(0);= new byte[fkey.Length];= new
byte[fIV.Length];.Read(key,0,(int)fkey.Length);.Read(IV, 0, (int)fIV.Length);[]
bin = new byte[100];rdlen = 0;totlen = fin.Length;len;des = new
DESCryptoServiceProvider();encStream = new CryptoStream(fout,
des.CreateDecryptor(key, IV), CryptoStreamMode.Write);= des.KeySize;(rdlen <
totlen)
{= fin.Read(bin, 0, 100);.Write(bin, 0, len);= rdlen + len;
}.Close();
}
Для кодування та декодування файлу алгоритмом RC2 в
системі був створений клас rc2.
Основні функції якого приведенні нижче.
Функція для тестового кодування.
public void Encrypt(String inName, String outName)
{fin = new FileStream(inName, FileMode.Open, FileAccess.Read);fout = new
FileStream(outName, FileMode.OpenOrCreate, FileAccess.Write);.SetLength(0);
[] bin = new byte[100];rdlen = 0;totlen =
fin.Length;len;CryptoServiceProvider rc2 = new RC2CryptoServiceProvider();encStream
= new CryptoStream(fout, rc2.CreateEncryptor(), CryptoStreamMode.Write);=
rc2.KeySize;(rdlen < totlen)
{= fin.Read(bin, 0, 100);.Write(bin, 0, len);= rdlen + len;
}= fout.Length + rc2.Key.Length + rc2.IV.Length;.Close();
}
Функція для декодування.
private static void DecryptData(String inName, String outName, String
desKey, String desIV)
{[] key, IV;fin = new FileStream(inName, FileMode.Open,
FileAccess.Read);fkey = new FileStream(desKey, FileMode.Open,
FileAccess.Read);fIV = new FileStream(desIV, FileMode.Open,
FileAccess.Read);fout = new FileStream(outName, FileMode.OpenOrCreate,
FileAccess.Write);.SetLength(0);= new byte[fkey.Length];= new
byte[fIV.Length];.Read(key, 0, (int)fkey.Length);.Read(IV, 0,
(int)fIV.Length);[] bin = new byte[100];rdlen = 0;totlen =
fin.Length;len;CryptoServiceProvider rc2 = new
RC2CryptoServiceProvider();encStream = new CryptoStream(fout,
rc2.CreateDecryptor(key, IV), CryptoStreamMode.Write);= rc2.KeySize;(rdlen <
totlen)
{= fin.Read(bin, 0, 100);.Write(bin, 0, len);= rdlen + len;
}.Close();
}
Для кодування та декодування файлу алгоритмом Rijndeal
в системі був створений клас rijndeal.
Основні функції якого приведенні нижче.
Функція для тестового кодування.
public void Encrypt(String inName, String outName)
{fin = new FileStream(inName, FileMode.Open, FileAccess.Read);fout = new
FileStream(outName, FileMode.OpenOrCreate, FileAccess.Write);.SetLength(0);[]
bin = new byte[100];rdlen = 0;totlen = fin.Length;len;rij = new
RijndaelManaged();encStream = new CryptoStream(fout, rij.CreateEncryptor(),
CryptoStreamMode.Write);= rij.KeySize;(rdlen < totlen)
{= fin.Read(bin, 0, 100);.Write(bin, 0, len);= rdlen + len;
}= fout.Length + rij.Key.Length + rij.IV.Length;.Close();
}
Функція для декодування.
private static void DecryptData(String inName, String outName, String
desKey, String desIV)
{[] key, IV;fin = new FileStream(inName, FileMode.Open,
FileAccess.Read);fkey = new FileStream(desKey, FileMode.Open,
FileAccess.Read);fIV = new FileStream(desIV, FileMode.Open,
FileAccess.Read);fout = new FileStream(outName, FileMode.OpenOrCreate,
FileAccess.Write);.SetLength(0);= new byte[fkey.Length];= new
byte[fIV.Length];.Read(key, 0, (int)fkey.Length);.Read(IV, 0,
(int)fIV.Length);[] bin = new byte[100];rdlen = 0totlen = fin.Length;len;reij =
new RijndaelManaged();encStream = new CryptoStream(fout,
reij.CreateDecryptor(key, IV), CryptoStreamMode.Write);= reij.KeySize;(rdlen
< totlen)
{= fin.Read(bin, 0, 100);.Write(bin, 0, len);= rdlen + len;
}.Close();
}
Для хешування та перевірки хеш коду файлу алгоритмом
sha512 в системі був створений клас sha512.
Основні функції якого приведенні нижче.
Функція для створення хеш коду.
public void Hash(string inName, string outName)
{fin = new FileStream(inName, FileMode.Open, FileAccess.Read);fout = new
FileStream(outName, FileMode.OpenOrCreate, FileAccess.Write);.SetLength(0);[]
hashValue;CryptoServiceProvider sha = new SHA512CryptoServiceProvider();=
sha.ComputeHash(fin);= sha.HashSize;.Write(hashValue, 0, hashValue.Length);=
fout.Length + fin.Length;.Close();.Close();
}
Функція перевірки хеш коду.string Chek(string inName, string outName)
{s = string.Empty;fin = new FileStream(inName, FileMode.Open,
FileAccess.Read);fout = new FileStream(outName, FileMode.Open, FileAccess.Read);[]
hashValue;[] hashValue1 = new byte[fout.Length];CryptoServiceProvider sha = new
SHA512CryptoServiceProvider();= sha.ComputeHash(fin);.Read(hashValue1, 0,
(int)fout.Length);.Close();.Close();(var i in hashValue.Except(hashValue1))
{= "Не идентичные";
}(s == string.Empty) { s = "Идентичные"; }s;
}
Для хешування та перевірки хеш коду файлу алгоритмом Ripemd160 в системі
був створений клас Ripemd160.
Основні функції якого приведенні нижче.
Функція для створення хеш коду.void Hash(string inName,string outName)
{fin = new FileStream(inName, FileMode.Open, FileAccess.Read);fout = new
FileStream(outName, FileMode.OpenOrCreate, FileAccess.Write);.SetLength(0);[]
hashValue;Managed rip = new RIPEMD160Managed();= rip.ComputeHash(fin);=
rip.HashSize;.Write(hashValue,0,hashValue.Length);= fout.Length +
fin.Length;.Close();.Close();
}
Функція перевірки хеш коду.string Chek(string inName, string outName)
{s=string.Empty;fin = new FileStream(inName, FileMode.Open,
FileAccess.Read);fout = new FileStream(outName, FileMode.Open,
FileAccess.Read);[] hashValue;[] hashValue1 = new byte[fout.Length];Managed rip
= new RIPEMD160Managed();= rip.ComputeHash(fin);.Read(hashValue1, 0,
(int)fout.Length);.Close();.Close();(var i in hashValue.Except(hashValue1))
{= "Не идентичные";
}(s == string.Empty) { s = "Идентичные"; }s;
}
4.4 Опис інтерфейсу користувача
Загальний вигляд головного вікна системи в одному з
робочих режимів наведений на рис. 4.5.
Рис. 4.5 Головне вікно системи в одному з робочих
режимів
Після того, як ми натиснемо на підпункт «Закодувати»,
буде відкрите діалогове вікно обирання файлу для тесту алгоритмів.
Загальний вигляд вікна «TripleDES» системи в одному з
робочих режимів наведений на рис. 4.6.
Рис. 4.6 Загальний вигляд вікна «TripleDES» системи в
одному з робочих режимів
Загальний вигляд вікна «DSE» системи в одному з
робочих режимів наведений на рис. 4.7.
Рис. 4.7 Загальний вигляд вікна «DSE» системи в одному
з робочих режимів
Загальний вигляд вікна «RC2» системи в одному з
робочих режимів наведений на рис. 4.8.
Рис. 4.8 Загальний вигляд вікна «RC2» системи в одному
з робочих режимів
Поки не буде вибрані ключ та вектор користувач не
зможе натиснути на кнопки «Закодувати файл» та «Розкодувати файл».
Загальний вигляд вікна «Rijndeal» системи в одному з
робочих режимів наведений на рис. 4.9.
Рис. 4.9 Загальний вигляд вікна «Rijndeal» системи в
одному з робочих режимів
Загальний вигляд вікна «SHA512» системи в одному з
робочих режимів наведений на рис. 4.10.
Рис. 4.10 Загальний вигляд вікна «SHA512» системи в одному
з робочих режимів
Рис. 4.11 Загальний вигляд вікна «RIPEMD160» системи в
одному з робочих режимів
5. ЕКОНОМІЧНЕ
ОБҐРУНТУВАННЯ ДОЦІЛЬНОСТІ РОЗРОБКИ ПРОГРАМНОГО ПРОДУКТУ
5.1 Організаційно-економічна частина
Програмний продукт, розроблений у дипломній роботі, може бути
реалізований в одиничному екземплярі або тиражованим і реалізований деякому
числу замовників. На сьогодні захист інформації від інформаційних крадіжок є
дуже актуальною проблемою. Програмний продукт, розроблений у дипломній роботі
реалізує шифрування на основі декількох алгоритмів шифрування. Продукт дає
змогу користувачу вибирати алгоритм для захисту інформації від крадіж.
Прийнято проводити розрахунок економічної ефективності використовування
розробки для її споживача. Важливим чинником, що впливає на процес формування
ціни, є конкуренція на ринку, необхідність обліку якої абсолютно очевидна. На
момент написання програмного продукту аналогів виявлено не було.
Найважливішим моментом для розробника, з економічної точки зору, є процес
формування ціни. Очевидно, що у програмних продуктів практично відсутній процес
фізичного старіння і зносу. Для них основні витрати доводяться на розробку
зразка, тоді як процес тиражування є, звичайним, порівняльним нескладним і
недорогим. Програмні продукти є вельми специфічним товаром з безліччю властивих
їм особливостей. Багато їх особливостей виявляються і в методах розрахунків
ціни на них. На розробку програмного продукту середньої складності звичайно
потрібні вельми незначні кошти. Проте, при цьому вона може дати економічний
ефект, що значно перевищує ефект від використовування досить дорогих систем.
5.2
Розрахунок економічного ефекту по впровадженню програмного продукту.
Економічна доцільність розробки полягає в економії трудовитрат в
порівнянні з ручною обробкою і отриманні достовірнішої інформації за коротший
час.
Таблиця. 5.1
Витрати на витратні матеріали
№ п/п
|
Найменування матеріалу
|
Витрата шт.
|
Ціна грн./шт.
|
Сума грн.
|
1
|
Допоміжна література
|
1
|
48
|
48
|
Разом 48
|
сумісний комп'ютер Pentium IІІ, RAM-256Mb, SVGA-800*600*16bit;
Амортизація розраховується лінійним способом, в розрахунку від строку
експлуатації, наприклад 3 роки.
:3=667грн. у рік.
Таблиця. 5.2
Основна заробітна платня програміста ПП
№ п/п
|
Виконавці
|
Трудомісткість, чел.дн.
|
Оклад, грн.
|
Витрати по з/п, грн.
|
1
|
Програміст
|
5
|
1000
|
238,09
|
Додаткова заробітна платня програміста складає 20 % від основної
заробітної платні:
,09*0,20=47,61грн
Фонд заробітної платні є сумою основної і додаткової заробітної платні:
,09+47,61=285,70 грн
Нарахування на ФОП:
1. Безробіття 1,6%
2. Пенсійний фонд 33,2%
. Соцзабезпечення тимчасової непрацездатності 1,4%
. Соцзабезпечення від нещасних випадків 1%
Підсумок: 37,2%
Відрахування на соціальні нужди складають 37,2 % від фонду оплати праці:
,70*0,372=106,28 грн
Накладні витрати складають 250 % від величини основної заробітної платні:
,09*2,5=595,22 грн
Таблиця. 5.3
Калькуляція
№ п/п
|
Найменування статей витрат
|
Витрати, грн.
|
1
|
Витратні матеріали
|
45
|
3
|
Основна заробітна платня
програміста
|
238,09
|
4
|
Додаткова заробітна платня
програміста
|
47,61
|
5
|
Відрахування на соціальне
страхування
|
106,28
|
6
|
Накладні витрати
|
395,22
|
Разом витрат Зк= 832,2
|
Витрати на ручну обробку інформації визначаються по формулі:
,
де
- об'єм інформації, оброблюваної уручну, Мбайт;
-
вартість однієї години роботи, грн./год.;
-
коефіцієнт, що враховує додаткові витрати часу на логічні операції при ручній
обробці інформації;
- норма
вироблення, Мбайт/ година.
В
даному випадку:
Оі
= 10 Мбайт (загальний розмір оброблювальних даних),
Заробітна
платня 900грн.
Ц=900/22/8=5,11
грн./ година,
Гд
= 2.5 (встановлений експериментально),
Нв
= 0.004 Мбайт / година.
Отже,
витрати на ручну обробку інформації будуть рівні:
Зр=10*5,11*2,5/0,004=31937,50
грн.
Витрати на автоматизовану обробку інформації розраховуються по наступній
формулі:
,
де
- час автоматичної обробки, годин;
-
вартість однієї години машинного часу, грн./година;
- час
роботи оператора, годин;
-
вартість однієї години роботи оператора, грн./година.
Для
нашого випадку:= 1922 годин,
Номінальний
фонд робочого часу розраховується по формулі :
k1n = к ( 1 - -------------- )
100%
к
- кількість відпрацьованих годин за рік;
к1
- внутрішні втрати робочого часу, 1- 2% (пільгові години, перерви і т. п ).
К
= д * р * м
д
- середня кількість робочих днів в місяці = 22;
р
- тривалість робочого дня = 8;
м
- кількість робочих місяців в році = 12;
К
= 22 * 8 * 12 = 2112
8 + 1= 2112 ( 1 - ------------ ) = 1922год.
100%
Час
роботи оператора = 1922 годин в рік
Вартість
однієї години машинного часу дорівнює:
Цм
= Цэ*Р
Це
- вартість 1кВт електроенергії ;
Р
- споживана потужність комп’ютера за годину 160Вт
Вартість
1 кВт електроенергії для підприємства 24,35 копійок або 0,2435грн.
Цм=160*0,24=38.4грн/год.=
1922 ч.,
Ц0
=900/ 22/ 8=5,11 грн. (заробітна платня 900грн)
Отже, витрати на автоматизовану обробку інформації будуть рівні:
За=1922*0,02+1922*(5,11+0,02)=9879,08 грн.
Таким чином, річна економія від упровадження рівна:
Еу = 24812,50 - 9879,08 - 2444,29= 12489,13грн.
Економічний ефект від використовування програмного забезпечення за рік
визначається по формулі, грн.:
.
Ег=12489,13
- 4500*0,2=11589,13грн.
Ефективність
розробки може бути оцінена за формулі:
.
Ер=11589,13
*0,4/2444,29=1,896
Оскільки Ер > 0.20, наша розробка є економічно доцільною.
Вартісна оцінка результатів застосування програмного забезпечення за
розрахунковий період Т визначається по формулі:
,
де
Т - розрахунковий період;
Рt - вартісна оцінка результатів t розрахункового періоду, грн.;
-
дисконтуюча функція, яка вводиться з метою приведення всіх витрат і результатів
до одного моменту часу.
Дисконтуюча функція має вигляд:
= 1 / (1
+ р) t,
де
р - коефіцієнт дисконтування (р = Ен = 0.2, Ен - нормативний коефіцієнт
ефективності капітальних вкладень).
Таким
чином,
.
Якщо
програмне забезпечення замінює ручну працю, отже, набір корисних результатів у
принципі не змінюється. Як оцінка результатів застосування програмного
забезпечення в рік береться різниця (економія) витрат, що виникає в результаті
використовування програмного забезпечення, тобто Рt = Еу.
Передбачається, що даний розробка без змін і доробок
використовуватиметься в перебігу п'яти років. Тоді вартісна оцінка результатів
застосування програмного забезпечення (економія) за розрахунковий період Т = 5
років складе:
=11589,13+9657,6+8048+6706,672+5588,89=41590,292
грн.
6. ОХОРОНА
ПРАЦІ
Охорона праці - це система законодавчих актів, соціально-економічних,
організаційних, технічних, гігієнічних та лікувально-профілактичних заходів і
засобів, що забезпечують безпеку, збереження здоров'я і працездатності людини в
процесі праці.
Задачі охорони праці - забезпечення нормальних, здорових, безпечних умов
праці, вивчення причин травматизму, професійних захворювань, пожарів та
розробки систем заходів і вимог по їх усуненню.
Законодавство України про охорону праці базується на:
Конституція України, яка гарантує права громадян на працю, відпочинок,
охорону здоров’я, медичну допомогу і страхування;
Закон України „Про охорону праці”, де вказано, що державна політика в
області охорони праці базується на пріоритеті життя і здоров’я людей в умовах
їх трудової діяльності. Відповідальність за створення нормальних і безпечних
умов труда несе роботодавець незалежно від форми власності підприємства чи
установи які здійснюють розробку виробництва та застосування ПЕОМ і ПК;
Норми штучного та природного освітлення визначені СНіП;
Закон України „Про забезпечення санітарного та епідемічного благополуччя
населення” де вказані основні вимоги гігієни та санітарії;
Параметри мікроклімату на робочих місцях регламентовані Держстандартом і
ДСН;
Категорія робіт по величині загальних енергозатрат встановлена ДСН;
Закон України „Про загальнообов’язкове державне соціальне страхування від
нещасного випадку на виробництві та професійного захворювання, які спричинили
втрату працездатності”, який гарантує право трудящих на соціальний захист і
компенсацію постраждалим матеріальних втрат при травмуванні і професійного
захворювання;
Кодекс законів про працю (КЗпП) де викладені окремі вимоги охорони праці;
Пожежна безпека викладена в законі України „Про пожежну безпеку” і
„Правила про пожежну безпеку в Україні”
Крім того є ряд Державних стандартів, правил, норм, інструкцій та інших
нормативних документів, регламентуючих питання охорони праці.
6.1 Аналіз небезпечних і шкідливих факторів в обчислювальному центрі
програмний кодування алгоритм хеш
Одна з найважливіших задач охорони праці - забезпечення безпеки
працюючих, тобто забезпечення такого стану умов праці, при якому виключено дію
на працюючих небезпечних і шкідливих виробничих чинників.
Нанесення травми людині в умовах виробництва обумовлене наявністю
небезпечних виробничих чинників:
несприятливі мікрокліматичні умови;
підвищений рівень шуму;
недостатнє або надмірне освітлення;
підвищений рівень рентгенівських випромінювань;
рівня електромагнітних випромінювань;
психофізіологічні шкідливі і небезпечні виробничі чинники.
Держстандарт 12.1.005-88 розповсюджується на повітря робочої зони
підприємств, встановлює загальні санітарно-гігієнічні вимоги до показників
мікроклімату й допустимому вмісту шкідливих речовин в повітрі робочої зони.
Вимоги на допустимий вміст шкідливих речовин в повітрі робочої зони
розповсюджуються на робочі місця незалежно від їх розташування.
Показники, якими характеризується мікроклімат є: температура повітря,
відносна вологість повітря, швидкість руху повітря, інтенсивність теплового
випромінювання. Низька температура повітря впливає на оператора, як на організм
людини так і на обладнання ПЕОМ. Великий вплив виявляє відносна вологість. При
відносній вологості повітря більш 75-80% знижується опір ізоляції, змінюються
робочі характеристики елементів, зростає інтенсивність відмов елементів ПЕОМ.
Швидкість руху повітря і запиленість повітряного середовища виявляють вплив на
функціональну діяльність людини і роботу приладів ПЕОМ.
В холодні періоди року температура повітря, швидкість його руху і
відносна вологість повітря відповідно складають: 22-24 С°; 0,1 м/с; 40-60%; в теплі періоди
року температура повітря - 23-25 С°; відносна вологість 40-60 %; швидкість руху повітря - 0,1
м/с.
Кондиціювання - це автоматична підтримка в закритих приміщеннях всіх або
окремих параметрів повітря з метою забезпечення оптимальних мікрокліматичних
умов.
Згідно СНіП 2.04. 05-91 система вентиляції, кондиціювання повітря й
повітряного опалення передбачена для суспільних, адміністративно-побутових і
виробничих категорій.
Одним з найважливіших фізіологічних механізмів організму є
терморегуляція, що залежить від мікрокліматичних умов навколишньої середи.
Терморегуляція підтримує тепловий баланс організму людини при різноманітних
метеорологічних умовах і важкості роботи, що виконується за рахунок звуження
або розширення поверхні кровоносних судин і відповідної роботи потових залоз.
Несприятливий мікроклімат в процесі роботи викликає недомагання і втому
організму, порушує нервову і розумову діяльність, сприяє зниженню
спостережливості і швидкості реакції.
Психофізіологічні шкідливі і небезпечні виробничі чинники по характеру
дії поділяються на фізичні і нервово-психічні перевантаження.
При експлуатації ПЕОМ можуть виникнути негативні явища в організмі
людини. Розлади, що виникають в результаті постійного виконання дій, що
повторюються, стосуються працівників, що використовують в своїй роботі
клавіатуру. При цьому виникає синдром тунельного зап’ястя, який викликає
розпухання сухожиль, і що супроводжується постійною біллю при виконанні
будь-яких дій, навіть не зв’язаних безпосередньо з професійною діяльністю.
Відповідно діючим нормативним документам (СН 512-78 та ДСанПіН
3.3.007-98) дана площа приміщення розрахована на одну людину 13,0 м2; об’єм
-35,1м3. Стіна, стеля, підлога приміщення виготовляються з матеріалів,
дозволених для оформлення приміщень санітарно-епідеміологічним наглядом.
Підлога приміщення вкрита діелектричним килимком, випробуваним на електричну
міцність.
Висота робочої поверхні столу для персонального комп’ютера (ПК) - 690 мм,
ширина повинна забезпечувати можливість виконання операцій в зоні досягнення
моторного ходу; висота столу 725 мм, ширина 800 мм, глибина 900 мм. Простір для
ніг: висота 600 мм, ширина 500 мм, глибина на рівні колін 500 мм, на рівні
витягнутої ноги 650мм.
Ширина й глибина сидіння 400 мм, висота поверхні сидіння 450 мм, кут
нахилу поверхні від 15°
вперед до 5° назад.
Поверхня сидіння плоска, передній край закруглений.
Заземлення конструкцій, які знаходяться в приміщенні надійно захищені
діелектричними щитками. В приміщенні з ПЕОМ кожен день проводиться вологе
прибирання.
В доступних місцях знаходяться аптечки першої медичної допомоги.
Приміщення з ПЕОМ оснащено системою автоматичної пожежної сигналізації, а
також устатковане засобами пожежегасіння. Підходи до засобів пожежегасіння
вільні. Приміщення має кімнати для відпочинку, приймання їжі, психологічного
розвантаження та інші побутові приміщення.
Для забезпечення безпеки життєдіяльності працівників у приміщенні варто
підтримувати необхідну якість повітря, тобто оптимальні (у крайньому випадку
припустимі) параметри мікроклімату, сталість газового складу й відсутність (у
крайньому випадку не вище ГПК) шкідливих домішок у повітрі. Для цього необхідно
подавати в ці приміщення певну кількість чистого зовнішнього повітря, потреба в
якому регламентується СНіП 2.04.05-91. Для підтримки певних параметрів
мікроклімату використовується опалення, вентиляція, кондиціювання, що є
найважливішою частиною інженерного спорудження.
При роботі на ПЕОМ людина наражається на шумовий вплив з боку багатьох
джерел, наприклад, шум викликаний роботою принтера (70 дБ).
Під впливом шуму відбувається зниження слухової чутливості, що тим
значні, ніж вище інтенсивність шуму і більше його експозиція. Діючи на слуховий
аналізатор, шум змінює функціональний стан багатьох систем органів людини
внаслідок взаємодії між ними через центральну нервову систему. Це виявляє вплив
на органи зору людини, вестибулярний апарат і рухові функції, а також
призводить до зниження мускульної дієздатності.
При роботі в умовах шуму спостерігається підвищена втомлюваність і
зниження дієздатності, погіршується увага і мовна комутація, створюються
передумови до помилкових дій працюючих. Являючись причиною частих головних
нездужань, нестійкого емоційного стану, шум створює передумови до погіршення
психологічного стану. Шкідливий вплив шуму на організм людини, як правило,
посилюється за наявності інших шкідливих або несприятливих виробничих чинників.
Джерелами випромінювання електромагнітних полів (ЕМП) в ПЕОМ є система
відхилення випромінювання монітору, а також елементи блоків живлення системного
модуля, монітору, принтера.
Дія електромагнітних полів на організм людини виявляється у
функціональному розладі центральної нервової системи. В результаті тривалого
перебування в зоні дії електромагнітних полів наступають передчасна
стомлюваність, сонливість або порушення сну, з'являються часті головні болі.
Систематичний вплив на працюючого ЕМП з рівнями, що перевищують
допустимі, призводить до порушення стану його здоров’я. При цьому можуть
виникати зміни в нервовій, серцево-судинній та інших системах організму людини.
При впливі ЕМП значної інтенсивності на організм можуть виникати поразки
кришталиків ока, нервово-психічні захворювання і трофічні явища (випадення
волосся, ломкість нігтів). Ступінь шкідливого впливу ЕМП на організм людини
визначається напругою електромагнітного поля, довжиною хвилі і тривалістю
перебування організму в зоні діяльності ЕМП.
Електронно-променеві трубки, які працюють при напрузі понад 6 кВ є
джерелами „м’якого” рентгенівського випромінювання. При напрузі понад 10 кВ
рентгенівське випромінювання виходить за межі скляного балону і розсіюється в
навколишньому просторі виробничого приміщення.
Шкідливий вплив рентгенівських променів зв’язаний з тим, що, проходячи
через біологічну тканину, вони викликають в тканині іонізацію молекул тканинної
речовини, що може призвести до порушення міжмолекулярних зв’язків, що в свою
чергу, призводить до порушення нормальної течії біохімічних процесів і обміну
речовин.
Значення освітлення в процесі життєдіяльності і особливо виробничої
діяльності сучасного суспільства величезне. Організація раціонального
освітлення робочих місць - одне з основних питань охорони праці. Залежно від
джерела світла виробниче освітлення може бути трьох видів: природне, штучне і
суміщене.
Для природного освітлення характерна висока дифузна (неуважність) денного
світла від небозводу, що вельми сприятливе для зорових умов роботи. Природне
освітлення підрозділяють на бічне, здійснюване через світлові віконні отвори;
верхнє, здійснюване через аераційні і зенітні ліхтарі, отвори в перекриттях;
комбіноване - бічне з верхнім. Природне освітлення характеризується тим, що
створювана освітленість змінюється в надзвичайно широких межах залежно від часу
дня, року, метеорологічних чинників. Тому природне освітлення неможливе
кількісно задавати величиною освітленості. Як нормована величина для природного
освітлення прийнята відносна величина - коефіцієнт природної освітленості
(КПО), який є вираженим у відсотках відношенням освітленості в даній крапці
усередині приміщення до одночасного значення зовнішньої горизонтальної
освітленості, створюваної світлом повністю відкритого небозводу, тобто
Штучне
освітлення передбачається у всіх виробничих і побутових приміщеннях, де не
досить природного світла, а також для освітлення приміщень в нічний час. По
функціональному призначенню штучне освітлення підрозділяють на робоче,
аварійне, евакуаційне, охоронне, чергове. Робоче освітлення забезпечує зорові
умови нормальний роботи, проходу людей і руху транспорту. Аварійне освітлення
влаштовують для продовження роботи при раптовому відключенні робочого
освітлення. При цьому нормована освітленість повинна складати 5 % від робочого
освітлення. Евакуаційне освітлення передбачається для евакуації людей з
приміщень при аваріях в місцях, небезпечних для проходу людей, на сходових
клітках (повинно бути в приміщеннях не менше 0,5, а на відкритих територіях -
не менше 0,2 лк).
По
розподілу світлового потоку в просторі розрізняють світильники прямого,
розсіяного і відображеного світла, а по конструктивному виконанню - світильники
відкриті, закриті, захищені, пилонепроникні, вологозахисні, вибухозахищені,
вибухобезпечні. За призначенням світильники діляться на світильники загального
і місцевого освітлення.
Штучне
освітлення може бути загальним (рівномірним або локалізованим) і комбінованим
(до загального додається місцеве). Застосування тільки місцевого освітлення
забороняється.
В силу тісного взаємозв’язку зору людини з роботою мозку освітлення
виявляє істотний вплив на центральну нервову систему, яка керує всією
життєдіяльністю людини. Раціональне освітлення сприяє підвищенню продуктивності
і безпеки праці і збереженню здоров’я працюючих. Недостатнє освітлення робочих
місць - одна з причин низької продуктивності праці. В цьому випадку очі
працюючого сильно напружені, важко розрізняють предмети, у людини знижується
темп і якість роботи, погіршується загальний стан.
На органах зору негативно відбивається як недостатнє так і надмірне
освітлення. Надмірна освітленість призводить до осліплення, що характеризується
різзю в очах, при цьому очі працюючого швидко втомлюються і зорове сприймання
різко погіршується.
Важливе значення для створення сприятливих умов праці має культура праці
й виробнича естетика. Чистота на робочому місці, правильно підібрана колірне
фарбування приміщень, інвентарю, устаткування, форма й покрій робочого одягу,
спеціально підібрана музика - все це створює гарний настрій, підвищує життєвий
тонус і працездатність. Естетичні умови на виробництві мають істотне значення
не тільки для оздоровлення, полегшення праці, але й для підвищення його
привабливості і продуктивності. У зв'язку із цим на промислових підприємствах
велике значення надається промисловій естетиці.
Як самостійна галузь знань промислова естетика і теоретично і
організаційно сформувалась порівняно недавно. Вона вивчає закони художньої
творчості в сфері виробництва. Коло питань, розроблювальних промисловою естетикою,
дуже широкий. Це раціональне колірне оформлення промислових приміщень і
встаткування, розумна організація робочого місця, художнє конструювання
верстатів, машин, інструментів, впровадження функціональної музики, художня
розробка моделей робочого одягу, устаткування стендів наочної агітації,
озеленення території цехів і підприємств.
Колір є одним з найбільш потужних засобів емоційного впливу на людину.
Колір робочих приміщень, устаткування, механізмів викликає в людини певні
емоції, впливає на стомлюваність, травматизм, брак у роботі, а отже, на
продуктивність праці. Впливаючи на нервову систему, колір збуджує або
заспокоює, створює ілюзію тепла або холоду, тяжкості або легкості, наближення
або віддалення. Колірне фарбування виробничих приміщень доцільно робити з
урахуванням технологічного призначення приміщень, умов роботи, температури,
характеру висвітлення й вимог охорони праці. Колір устаткування повинен бути
м'яким, спокійним, психологічно сприятливим. У яскраві контрастні кольори
фарбують органи керування встаткування, рухливі частини.
У виробничому інтер'єрі колір також відіграє попереджуючу роль,
використовується для зображення технологічних символів і всіляких сигналів.
Наприклад, при будівництві промислових об'єктів трубопроводи різного призначення
(для води, кислоти, газу) пофарбовані в різний колір. Усім відомі
сигнально-попереджуючі кольори: червоний - стоп, небезпечно; жовтий - можлива
небезпека; зелений - повна безпека. З економічної точки зору раціональне
фарбування робочих приміщень і встаткування підвищує продуктивність праці на
5-20%, зменшує число нещасних випадків.
Принципам організації праці повинно відповідати і взаємне компонування
робочих місць у рамках офісного приміщення, так і структура індивідуального
робочого місця.
Основні принципи ергономічної організації робочого місця - комфорт і
мінімізація навантажень. Зрозуміло, принципам ергономіки повинна відповідати й
використовувані меблі. Наприклад, зручне крісло, у якому можна без шкоди для
здоров'я працювати тривалий час, повинне бути оснащений підлокітниками й
підголівником, що знімають навантаження з м'язів плечового поясу. Пружна спинка
анатомічної форми зменшує навантаження на хребет. У результаті конструкція
рівномірно підтримує все тіло. Також крісло повинне регулюватися по висоті й
глибині сидіння, залежно від ваги й росту людини.
Серед столів найбільш ергономічною визнана криволінійна кутова форма. За
рахунок увігнутості більша частина їхньої площі виявляється використовуваної,
оскільки попадає в зону охоплення руками людини, рівну 35-40 см.
Самим оптимальним фахівцями вважається розташування меблів за принципом
«усе під рукою», коли всі необхідні для щоденної роботи полиці, тумби, шафи
перебувають на відстані витягнутої руки. Це дозволяє виключити непотрібні
витрати енергії й зосередиться на виконанні прямих обов'язків.
6.2 Заходи щодо нормалізації шкідливих і небезпечних факторів
На сьогоднішній день основним засобом захисту від електромагнітних
випромінювань, що застосовуються в обчислювальній техніці є екранування джерел випромінювання.
Сьогодні всі монітори, що випускаються, а також блоки живлення мають корпус,
виконаний зі спеціального матеріалу, що практично повністю затримує проходження
електромагнітного випромінювання. Застосовуються також спеціальні екрани, що
зменшують ступінь впливу електромагнітних і рентгенівських променів на
оператора.
Для зниження електромагнітного впливу на людину-оператора
використовуються також раціональні режими роботи, при яких час роботи на ПЕОМ
не повинна перевищувати 50 % робочого часу.
Вентиляція - це організований і регульований повітрообмін у приміщеннях,
у процесі якого забруднене або нагріте повітря віддаляється й на його місце
подається свіже чисте повітря.
Системи опалення - це комплекс елементів, необхідних для опалення
приміщень в холодний період року, нормованої температури повітря не нижче
встановленої Держстандарт 12.1. 005-88 і СНіП 2.04. 05-91. У приміщеннях з
електронно-обчислювальною технікою передбачають центральне опалення в
сполученні із приточною вентиляцією або кондиціювання повітря при одне- і
двозмінному режимах роботи, а при трьохзмінному - тільки повітряне опалення.
Гранично допустимі рівні напруги дотику і струмів при експлуатації і
ремонті обладнання забезпечені:
застосуванням малої напруги;
ізоляцією струмоведучих мереж;
обґрунтуванням і оптимальним вибором елементної бази, що виключає
передумови поразки електричним струмом;
правильного компонування, монтажу приладів і елементів;
дотриманням умов безпеки при настанові і заміні приладів і інше.
Захист від небезпечних впливів електричного струму при експлуатації
обчислювальних комплексів забезпечені:
застосування захисного заземлення або обнуління;
ізоляцією струмопровідних частин;
дотриманням умов безпеки при настанові і заміні агрегатів;
надійним контактним сполученням з урахуванням перепаду кліматичних
параметрів.
Для усунення причин утворення статичного заряду застосовуються провідні
матеріали для покриття підлоги, панелей, робочих столів, стільців. Для зниження
ступеня електризації і підвищення провідності діелектричних поверхонь
підтримується відносна вологість повітря на рівні максимально допустимого
значення.
На робочих місцях всі металеві та електропровідні неметалеві обладнання
заземлені.
Ефективне рішення проблеми захисту від впливу шуму досягається проведенням
комплексу заходів, в які входить ослаблення інтенсивності цього шкідливого
виробничого чинника в джерелах і на шляху розповсюдження звукових хвиль.
Зниження виробничого шуму в приміщеннях, де розміщені ПЕОМ, досягається
за рахунок акустичної обробки приміщення - зменшення енергії відбитих хвиль,
збільшення еквівалентної площі звукопоглинаючих поверхонь, наявність в
приміщеннях штучних звукопоглиначів.
З метою зниження шуму в самих джерелах встановлюються віброгасячі і
шумогасячі прокладки або амортизатори. В якості засобів звукопоглинання
застосовуються не горючі або тяжко горючі спеціальні перфоровані плити, панелі,
мінеральна вата з максимальним коефіцієнтом поглинання в межах частот 31.5-8000
Гц.
Для створення нормальних умов роботи програмістів і операторів ПЕОМ в
машинному залі використовується система кондиціювання, що забезпечує необхідні
оптимальні мікрокліматичні параметри і чистоту повітря.
Електронно-променеві трубки, магнетрони, тиратрони та інші
електровакуумні прилади, що працюють при напрузі вище 6 кВ, є джерелами
„м’якого” рентгенівського випромінювання. При технічній експлуатації апаратури,
в якій напруга вище 15 кВ, використовують засоби захисту для відвертання
рентгенівського опромінення операторів і інженерно-технічних робітників, бо при
такій напрузі рентгенівське випромінювання розсіюється в навколишньому просторі
виробничого приміщення.
Шкідливий вплив рентгенівських променів зв’язаний з тим, що порушення
міжмолекулярних зв’язків тканинної речовини може призвести до порушення
нормальної течії біохімічних процесів і обміну речовин.
Засобами захисту від „м’якого” рентгенівського випромінювання є
застосування поляризаційних екранів, а також використання в роботі моніторів,
що мають біо-керамічне покриття і низький рівень радіації. В якості засобів
захисту від чинності м’яких рентгенівських променів застосовуються екрани з
сталевого листа (0,5-1 мм) або алюмінію (3 мм), спеціальної гуми.
Для відвертання розсіювання рентгенівського випромінювання по виробничому
приміщенню встановлюють захисні огорожі з різноманітних захисних матеріалів,
наприклад, свинцю або бетону.
При правильно розрахованому і виконаному освітленні очі працюючого за
комп’ютером протягом тривалого часу зберігають здатність добре розрізняти
предмети не втомлюючись. Це сприяє зниженню професійного захворювання очей,
підвищується працездатність. Раціональне освітлення відповідає ряду вимог:
достатнє, щоб очі без напруги могли розрізняти деталі;
постійна напруга в мережі не коливається більше ніж на 4%;
рівномірно розподілено по робочим поверхням, щоб очам не приходилося
зазнавати різкого контрасту кольорів;
не викликає дії, яка сліпить органи зору працюючого (зменшення блищання
джерел, що відбивають світло, досягається застосуванням світильників, які
розсіюють світло);
не викликає різких тіней на робочих місцях.
Задачею розрахунку є визначення необхідної потужності електричної
освітлювальної установки для створення у виробничому приміщенні заданої
освітленості. При проектуванні освітлювальної установки необхідно вирішити
наступні основні питання:
вибрати тип джерела світла - рекомендуються газорозрядні лампи, за
винятком місць, де температура повітря може бути менш +5°С і напруга в мережі
падати нижче 90 % номінального, а також місцевого освітлення (у цих випадках
застосовуються лампи розжарювання);
визначити систему освітлення (загальна локалізована або рівномірна,
комбінована);
вибрати тип світильників з урахуванням характеристик світорозподілення,
умов середовища (конструктивного виконання) та інше;
розподілити світильники і визначити їх кількість (світильники можуть
матися в своєму розпорядженні рядами, в шаховому порядку, ромбоподібно);
визначити норму освітленості на робочому місці.
Для розрахунку штучного освітлення використовують в основному три методи.
Найчастіше її розраховують по світловому потоку. Для цього визначається
світловий потік кожної лампи по нормуючій мінімальній горизонтальній
освітленості Еmin (лк) з вираження:
=(Emin·S·K·z) / n1·n·N,
де F - світловий потік лампи в світильнику, лм;- площа приміщення, м2;-
коефіцієнт запасу;- коефіцієнт нерівномірного освітлення;- коефіцієнт
використання світлового потоку;- кількість ламп в світильнику;- число
світильників.
Якщо освітлення здійснюється рядами люмінесцентних ламп, те вираження
вирішується відносно N. Значення коефіцієнта n1 визначається по довіднику в
залежності від типу світильника, коефіцієнтів відбивання стін Рс, стелі Рп,
робітничій поверхні і від розмірів приміщення. Показник приміщення fi
визначається з виразу:
= А·В/Нр·(А+В),
де А і В - довжина і ширина освітленого приміщення, м;
Нр - висота підвісу світильника над робітничою поверхнею, м.
У випадку застосування люмінесцентних ламп потрібна кількість
світильників N, яка визначається за формулою:
=Emin·S·K·z/F·n1·n
Поділивши число світильників N на число вибраних рядів світильників,
визначають число світильників у кожному ряду.
Нехай зал має розміри А=8м, В=5м, h=3м, стеля обладнується світильниками
Л201Б з люмінесцентними лампами ЛБ80.
Рівень робітничої поверхні над полом 0,8 м, при цьому Нр=2,2 м.
Показник приміщення рівний:=40/2,2 (8+5)=1,3986
По довіднику визначаємо значення коефіцієнта n1 (для значень Рс=0,5,
Рп=0,3): n1=0,7. Значення коефіцієнта нерівномірного освітлення приймаємо
рівним 1,1, а коефіцієнта запасу - 1,5. При загальному типі освітлення значення
Emin=400 лк. Знаючи значення світлового потоку кожної лампи, можемо визначити
необхідну кількість світильників:=400·8·5·1,5·1,1/5220·0,7·2=3(штук)
Загальна потужність освітлювальної установки рівна:
Р=2·80·3=480(Вт)
По результатах проведених розрахунків можна зробити висновок про те, що
небезпечні і шкідливі виробничі чинники, діючи в робочій зоні, знаходяться в
межах допустимих норм і їхній вплив на організм працюючих не приносить істотної
шкоди здоров’ю.
6.3 Пожежна безпека
В системі заходів, направлених на охорону державної і особистої власності
громадян, відвертання впливу на людей небезпечних чинників пожежі і вибуху,
питання пожежної і вибухової безпеки займають важливе місце.
По класифікації приміщень з ПЕОМ по пожежній небезпеці відносяться до
категорії В (СНіП 2.09.02-85), що характеризуються наявністю твердих горючих і
важко горючих речовин і матеріалів, а також легкозаймистих матеріалів.
Причини пожежі :
паління за робочим місцем;
використовувати нагрівальні прилади в приміщеннях з ПЕОМ;
від’єднувати і приєднування кабелів за не справності і наявності напруги
в мережі;
за наявністю не визначення напруги в ланцюзі, замиканням клем.
В електронно-обчислювальній техніці пожежну небезпеку створюють прилади,
що нагріваються, електро- і радіотехнічні елементи. Вони нагрівають навколишнє
повітря і близько розташовані деталі і провідники. Все це може призвести до
займання означених елементів, руйнування ізоляції і короткого замикання.
Технологічні об’ємні підлоги виконуються з негорючих або тяжко горючих
матеріалів з межею вогнестійкості не менше 0,5 г. Підпільні простори під
об’ємними підлогами відділяють негорючими перегородками з межею вогнестійкості
не менше 0,75 г на ділянки площею не більш 250 м2.
Для гасіння можливих пожеж передбачена наявність первинних засобів
пожежогасіння, згідно «Правил пожежної безпеки в Україні» так і пожежні крани
із брезентовими рукавами, пожежні щити (1 щит на 5000м2).
В кожній кімнаті знаходяться вогнегасники. Вогнегасники діляться на
хімічні, пінні, повітряно-пінні, СО2 - вогнегасники і порошкові.
Вогнегасники допускаються до експлуатації якщо їхні технічні
характеристики відповідають нормативним значенням, встановленим
експлуатаційно-технічною документацією. Зменшення змісту вогнегасочої речовини
і тиску у вогнегасниках не повинне перевищувати 10 % від встановленого
номінального значення.
При розміщенні вогнегасників безпосередній вплив на них сонячних
променів, опалювальних і нагрівальних пристроїв. За конструкцією, матеріалами,
методами контролю, умовами змісту, обслуговуванням вогнегасники повинні
відповідати вимогам Правил пристрою і безпечної експлуатації судин, що працюють
під тиском.
Для успішного гасіння пожежі велике значення має швидке виявлення пожежі
та своєчасний виклик пожежних підрозділів до місця пожежі. Пожежний зв’язок і
сигналізація можуть бути спеціального або загального призначення,
радіозв’язком, електричною пожежною сигналізацією (ЕПС), сиренами. ЕПС є
найбільш швидким та надійним засобом сповіщення про виникнення пожежі. В
залежності від схеми з’єднання розрізнюють променеві (радіальні) та шлейфні
(кільцеві) системи ЕПС.
ЕПС складаються з таких основних частин: сповіщувачів, встановлених в
приміщеннях; приймальної станції, яка знаходиться в черговій кімнаті пожежної
команди; блока поживи від сіті та від акумулятора (резервний); системи
переключення з одної поживи на іншу; електропровідній сіті, яка з’єднує
сповіщувачі з приймальною станцією.
В кімнаті з ПЕОМ розміщений сповіщувач (датчик) тепловий легкоплавкий.
При збільшенні температури легкоплавкий сплав розплавляється і пружинячі
пластинки, розмикаючись, вмикають ланцюг сигналізації.
У приміщенні знаходиться розроблений і розміщений на видному місці план
евакуації людей і матеріальних цінностей при пожежі з яким ознайомлені
працівники підприємства.
ВИСНОВКИ
У процесі виконання дипломної роботи було дослідження та проведений
аналіз алгоритмів кодування даних. В процесі дослідження було створено систему
для проведення аналізу алгоритмів кодування даних. Розроблена система дозволяє:
· проаналізувати властивості алгоритмів кодування даних;
· закодувати файл одним з 6 алгоритмів;
· розкодувати файл одним з 6 алгоритмів.
Щоб реалізувати поставлену задачу потрібно було обрати оптимальну мову
програмування. Для вирішення цієї задачі найбільш підходить C#. Ця мова
програмування має великі можливості щодо створення прикладного програмного
забезпечення та дозволяє створювати різноманітні програмні продукти. Дана
програма була створена за допомогою саме цієї мови програмування, що дозволило
зробити зручний інтерфейс і автоматизувати виконання дій.
В ході досліджень було з’ясовано, що найбільш захищеним алгоритмом
кодування є алгоритм Rijndeal, а алгоритмом хешування є SHA2.
Середовище розробки Visual Studio 2008 Express є унікальною системою, в
якій технологія високопродуктивної оптимізуючої компіляції поєднується з
візуальними засобами розробки.
Для створення додатків в Visual Studio 2008 Express використовується
об'єктно-орієнтований підхід, що базується на застосуванні різних компонентів
(візуальних і не візуальних), що забезпечує необмежену розширюваність і
масштабованість. Visual Studio 2008 Express дозволяє розробнику швидко
створювати і вільно поширювати додатки, що працюють істотно швидше і надійніше
за попереднє покоління програмних продуктів, які будувалися за допомогою систем
розробки, заснованих на коді, що інтерпретується.
Таким чином, середовище програмування Visual Studio 2008 Express є одним
з визнаних лідерів серед візуальних систем програмування і могутнім
інструментом для створення прикладних програмних систем.
СПИСОК ЛІТЕРАТУРИ
1. Бишоп
Дж. C# в кратком изложении. -М.: Бином. Лаборатория знаний, 2005.
2. Гарнаев
А.Ю. Самоучитель Visual Studio .NET 2003. - СПб.: БХВ-Петербург, 2003.
. Грэхем
И. Объектно ориентированные методы. - М.: Издательский дом "Вильямс",
2004.
. Гуннерсон
Э. Введение в C#. - СПб.: Питер, 2001.
. Дубовцев
А. Microsoft .Net в подлинеке. - СПб.: БВХ-Петербург, 2008.
. Кариев
Ч.А. Разработка Windows-приложений на основе Visual C# . БИНОМ. Лаборатория
знаний, Интернет-университет информационных технологий - ИНТУИТ.ру, 2007.
. Кент
Бек. Экстремальное программировнаие. - СПб.: Питер, 2002.
. Мартин
Ф. Архитектура корпоративных программных приложений. - М.: Издательский дом
"Вильямс", 2004.
9. Лапонина О.Р.
Криптографические основы безопасности
<http://www.intuit.ru/department/security/networksec/>. - М.:
Интернет-университет информационных технологий - ИНТУИТ.ру, 2004. - С. 320. -
ISBN 5-9556-00020
</wiki/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:BookSources/5955600020>-5
10. Нейлгел
К., Ивьен Б., Глинн Дж. С# 2008 для профессионалов. -М.: Издательский дом
"Вильямс", 2008.
11. Нильс Фергюсон
</w/index.php?title=%D0%A4%D0%B5%D1%80%D0%B3%D1%8E%D1%81%D0%BE%D0%BD,_%D0%9D%D0%B8%D0%BB%D1%8C%D1%81&action=edit&redlink=1>,
Брюс Шнайер
</wiki/%D0%A8%D0%BD%D0%B0%D0%B9%D0%B5%D1%80,_%D0%91%D1%80%D1%8E%D1%81>
Практическая криптография = Practical Cryptography: Designing and Implementing
Secure Cryptographic Systems. - М.: «Диалектика»
</wiki/%D0%94%D0%B8%D0%B0%D0%BB%D0%B5%D0%BA%D1%82%D0%B8%D0%BA%D0%B0_(%D0%B8%D0%B7%D0%B4%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D1%82%D0%B2%D0%BE)>,
2004. - 432 с. - 3 000 экз. - ISBN 5-8459-0733-0
</wiki/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:BookSources/5845907330>,
ISBN 0-4712-2357-3 </wiki/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:BookSources/0471223573>
12. Петцольд
Ч. Программирование для Microsoft Windows на C#. - М.: Русская Редакция, 2009.
13. Прайс
Дж., Гандерлой М. Visual C# .NET : Пер. с англ. - М.: ВЕК+, 2005.
. Прайс
Дж. Visual C# .NET Полное руководство. - М.: ВЕК+, 2004.
. Рихтер
Дж.. Программирование на платформе Microsoft .Net Framework. - М.: Русская
Редакция, 2007.
. Робинсон
С., Корнес О., Глинн Дж. С# для профессионалов. - М.: Лори, 2008.
17. Семенов Ю. А. Алгоритм
DES <http://book.itep.ru/6/des_641.htm>.
18. Смайли
Дж. Учимся программировать на C# вместе с Джоном Смайли. - СПб.: Диасофт-ЮП,
2008.
19. Троелсен
Э. Язык программирования С# 2005 и платформа .Net 2.0. - М.: Издательский дом
"Вильямс", 2007.
. Троелсен
Э. С# и платформа .NET. Библиотека программиста. - СПб.: Питер, 2004.
21. Фролов
А.В. Язык C#. Самоучитель. - М.: Диалог-МИФИ, 2003.
22. Чакработи
А., Кранти Ю., Сандху Р. Microsoft .NET Framework: разработка профессиональных
проектов: Пер. с англ. - СПб.: БХВ-Петербург, 2006.
23. <http://csrc.nist.gov/CryptoToolkit/aes/pre-round1/aes_9701.txt>
. <http://www.nist.gov/public_affairs/releases/g00-176.htm>
. <http://csrc.nist.gov/CryptoToolkit/aes/>
. <http://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
. <http://homes.esat.kuleuven.be/~cosicart/pdf/AB-9601/>
(Исходные коды)
. <http://www.intuit.ru/>
//Интернет-университет информационных технологий
. <http://ru.wikipedia.org/>
// Свободная Интернет-энциклопедия
. <http://www.rsdn.ru/>
// Russian Software Developer Network <http://www.opennet.ru/>
Додаток А
System;System.Collections.Generic;System.ComponentModel;System.Data;System.Drawing;System.Text;System.Windows.Forms;System.Security.Cryptography;System.IO;diplom
{partial class des : Form
{
//desstatic string key="", IV="";static int keysize =
0;tim;static long output = 0;des()
{();
}void Encrypt(String inName, String outName)
{fin = new FileStream(inName, FileMode.Open, FileAccess.Read);fout = new
FileStream(outName, FileMode.OpenOrCreate, FileAccess.Write);.SetLength(0);[]
bin = new byte[100];rdlen = 0;totlen = fin.Length;len;des = new
DESCryptoServiceProvider();encStream = new CryptoStream(fout,
des.CreateEncryptor(), CryptoStreamMode.Write);= des.KeySize;(rdlen <
totlen)
{= fin.Read(bin, 0, 100);.Write(bin, 0, len);= rdlen + len;
}= fout.Length + des.Key.Length + des.IV.Length;.Close();
}
//static void EncryptData(String inName, String outName, String desKey,
String desIV)
{[] key, IV;
//Create the file streams to handle the input and output files.fin = new
FileStream(inName, FileMode.Open, FileAccess.Read);fout = new
FileStream(outName, FileMode.OpenOrCreate, FileAccess.Write);fkey = new
FileStream(desKey, FileMode.Open, FileAccess.Read);fIV = new FileStream(desIV,
FileMode.Open, FileAccess.Read);.SetLength(0);= new byte[fkey.Length];= new
byte[fIV.Length];.Read(key, 0, (int)fkey.Length);.Read(IV, 0,
(int)fIV.Length);[] bin = new byte[100];rdlen = 0;totlen = fin.Length;len;des =
new DESCryptoServiceProvider();encStream = new CryptoStream(fout, des.CreateEncryptor(key,
IV), CryptoStreamMode.Write);= des.KeySize;(rdlen < totlen)
{= fin.Read(bin, 0, 100);.Write(bin, 0, len);= rdlen + len;
}.Close();= fout.Length;
}static void DecryptData(String inName, String outName, String desKey,
String desIV)
{[] key, IV;fin = new FileStream(inName, FileMode.Open,
FileAccess.Read);fkey = new FileStream(desKey, FileMode.Open,
FileAccess.Read);fIV = new FileStream(desIV, FileMode.Open,
FileAccess.Read);fout = new FileStream(outName, FileMode.OpenOrCreate, FileAccess.Write);.SetLength(0);=
new byte[fkey.Length];= new
byte[fIV.Length];.Read(key,0,(int)fkey.Length);.Read(IV, 0, (int)fIV.Length);
//Create variables to help with read and write.[] bin = new byte[100];
//This is intermediate storage for the encryption.rdlen = 0; //This is the
total number of bytes written.totlen = fin.Length; //This is the total length
of the input file.len; //This is the number of bytes to be written at a
time.des = new DESCryptoServiceProvider();encStream = new CryptoStream(fout,
des.CreateDecryptor(key, IV), CryptoStreamMode.Write);= des.KeySize;
//Read from the input file, then encrypt and write to the output
file.(rdlen < totlen)
{= fin.Read(bin, 0, 100);.Write(bin, 0, len);= rdlen + len;
}.Close();
}void Form1_Load(object sender, EventArgs e)
{
}void button1_Click(object sender, EventArgs e)
{.FileName = "";.Filter = "DES key file|
*.deskey";(saveFileDialog1.ShowDialog() == DialogResult.OK)
{des = new DESCryptoServiceProvider();.GenerateKey();= des.KeySize;=
saveFileDialog1.FileName;fkey = new FileStream(saveFileDialog1.FileName,
FileMode.Create, FileAccess.Write);.Write(des.Key, 0, des.Key.Length);.Close();
}(key != "" & IV != "")
{.Enabled = true;
}
}void button4_Click(object sender, EventArgs e)
{.FileName = "";.Filter = "DES IV file|
*.desIV";(saveFileDialog1.ShowDialog() == DialogResult.OK)
{des = new DESCryptoServiceProvider();.GenerateIV();fiv = new
FileStream(saveFileDialog1.FileName, FileMode.Create, FileAccess.Write);=
saveFileDialog1.FileName;.Write(des.IV, 0, des.IV.Length);.Close();
}(key != "" & IV != "")
{.Enabled = true;
}
}void button5_Click(object sender, EventArgs e)
{.FileName = "";.Filter = "DES key file|
*.deskey";(openFileDialog1.ShowDialog() == DialogResult.OK)
{= openFileDialog1.FileName;
}(key != "" & IV != "")
{.Enabled = true;
}
}void button6_Click(object sender, EventArgs e)
{= openFileDialog1.FileName;
}(key != "" & IV != "")
{.Enabled = true;
}
}void button2_Click(object sender, EventArgs e)
{.FileName = "";.Filter = "All file| *.*";.FileName =
"";.Filter = "DES file|
*.des";(openFileDialog1.ShowDialog() == DialogResult.OK)
{(saveFileDialog1.ShowDialog() == DialogResult.OK)
{=DateTime.Now;(openFileDialog1.FileName,
saveFileDialog1.FileName,key,IV);.Text = (DateTime.Now - tim).ToString();
}
}
}void button3_Click(object sender, EventArgs e)
{.FileName = "";.Filter = "DES file| *.des";.FileName
= "";.Filter = "All file| *.*";(openFileDialog1.ShowDialog()
== DialogResult.OK)
{(saveFileDialog1.ShowDialog() == DialogResult.OK)
{= DateTime.Now;(openFileDialog1.FileName, saveFileDialog1.FileName, key,
IV);.Text = (DateTime.Now - tim).ToString();
}
}
}
}
}System;System.Collections.Generic;System.ComponentModel;System.Data;System.Drawing;System.Linq;System.Text;System.Windows.Forms;diplom
{partial class Main : Form
{tim;Main()
{();
}void tripleDESToolStripMenuItem_Click(object sender, EventArgs e)
{fm = new tdes();.ShowDialog();
}void dESToolStripMenuItem_Click(object sender, EventArgs e)
{fm = new des();.ShowDialog();
}void encodeToolStripMenuItem_Click(object sender, EventArgs e)
{(openFileDialog1.ShowDialog()==DialogResult.OK)
{.Value = 1;tdesf = new tdes();.Value = 2;= DateTime.Now;.Encrypt(openFileDialog1.FileName,
openFileDialog1.FileName + "tdes");.Text = (DateTime.Now -
tim).ToString();.Value = 3;.Text = tdes.keysize.ToString();.Value = 4;.Text =
tdes.output.ToString();.Value = 5;.Dispose();.Value = 1;desf = new des();.Value
= 2;= DateTime.Now;.Encrypt(openFileDialog1.FileName, openFileDialog1.FileName
+ "des");.Text = (DateTime.Now - tim).ToString();.Value = 3;.Text =
des.keysize.ToString();.Value = 4;.Text = des.output.ToString();.Value =
5;.Dispose();.Value = 1;rc2f = new rc2();.Value = 2;=
DateTime.Now;f.Encrypt(openFileDialog1.FileName, openFileDialog1.FileName +
"rc2");.Text = (DateTime.Now - tim).ToString();.Value = 3;.Text =
rc2.keysize.ToString();.Value = 4;.Text = rc2.output.ToString();.Value =
5;f.Dispose();.Value = 1;rijf = new Rijnder();.Value = 2;=
DateTime.Now;.Encrypt(openFileDialog1.FileName, openFileDialog1.FileName +
"rij");.Text = (DateTime.Now - tim).ToString();.Value = 3;.Text =
Rijnder.keysize.ToString();.Value = 4;.Text = Rijnder.output.ToString();.Value
= 5;.Dispose();.Value = 1;ripf = new RIPEMD160();.Value = 2;=
DateTime.Now;.Hash(openFileDialog1.FileName, openFileDialog1.FileName +
"rip");.Text = (DateTime.Now - tim).ToString();.Value = 3;.Text =
RIPEMD160.keysize.ToString();.Value = 4;.Text = RIPEMD160.output.ToString();.Value
= 5;.Dispose();.Value = 1;shaf = new SHA512();.Value = 2;=
DateTime.Now;.Hash(openFileDialog1.FileName, openFileDialog1.FileName +
"sha");.Text = (DateTime.Now - tim).ToString();.Value = 3;.Text =
SHA512.keysize.ToString();.Value = 4;.Text = SHA512.output.ToString();.Value =
5;.Dispose();
}
}void rijnderToolStripMenuItem_Click(object sender, EventArgs e)
{fm = new Rijnder();.ShowDialog();
}void mD5ToolStripMenuItem_Click(object sender, EventArgs e)
{fm = new RIPEMD160();.ShowDialog();
}void rSAToolStripMenuItem_Click(object sender, EventArgs e)
{fm = new SHA512();.ShowDialog();
}void saveFilToolStripMenuItem_Click(object sender, EventArgs e)
{.Exit();
}void rC2ToolStripMenuItem_Click(object sender, EventArgs e)
{fm = new rc2();.ShowDialog();
}
}
}System;System.Collections.Generic;System.ComponentModel;System.Data;System.Drawing;System.Linq;System.Text;System.Windows.Forms;System.Security.Cryptography;System.IO;diplom
{partial class rc2 : Form
{static string key = "", IV = "";static int keysize =
0;static long output=0;tim;rc2()
{();
}
//void Encrypt(String inName, String outName)
{fin = new FileStream(inName, FileMode.Open, FileAccess.Read);fout = new
FileStream(outName, FileMode.OpenOrCreate, FileAccess.Write);.SetLength(0);[]
bin = new byte[100];rdlen = 0;totlen = fin.Length;len;CryptoServiceProvider rc2
= new RC2CryptoServiceProvider();encStream = new CryptoStream(fout,
rc2.CreateEncryptor(), CryptoStreamMode.Write);= rc2.KeySize;(rdlen <
totlen)
{= fin.Read(bin, 0, 100);.Write(bin, 0, len);= rdlen + len;
}= fout.Length + rc2.Key.Length + rc2.IV.Length;.Close();
}
//static void EncryptData(String inName, String outName, String desKey,
String desIV)
{[] key, IV;fin = new FileStream(inName, FileMode.Open,
FileAccess.Read);fout = new FileStream(outName, FileMode.OpenOrCreate,
FileAccess.Write);fkey = new FileStream(desKey, FileMode.Open,
FileAccess.Read);fIV = new FileStream(desIV, FileMode.Open,
FileAccess.Read);.SetLength(0);= new byte[fkey.Length];= new
byte[fIV.Length];.Read(key, 0, (int)fkey.Length);.Read(IV, 0,
(int)fIV.Length);[] bin = new byte[100];rdlen = 0;totlen =
fin.Length;len;CryptoServiceProvider rc2 = new
RC2CryptoServiceProvider();encStream = new CryptoStream(fout,
rc2.CreateEncryptor(key, IV), CryptoStreamMode.Write);= rc2.KeySize;(rdlen <
totlen)
{= fin.Read(bin, 0, 100);.Write(bin, 0, len);= rdlen + len;
}.Close();= fout.Length;
}static void DecryptData(String inName, String outName, String desKey,
String desIV)
{[] key, IV;fin = new FileStream(inName, FileMode.Open,
FileAccess.Read);fkey = new FileStream(desKey, FileMode.Open,
FileAccess.Read);fIV = new FileStream(desIV, FileMode.Open,
FileAccess.Read);fout = new FileStream(outName, FileMode.OpenOrCreate,
FileAccess.Write);.SetLength(0);= new byte[fkey.Length];= new
byte[fIV.Length];.Read(key, 0, (int)fkey.Length);.Read(IV, 0,
(int)fIV.Length);[] bin = new byte[100];rdlen = 0;totlen =
fin.Length;len;CryptoServiceProvider rc2 = new
RC2CryptoServiceProvider();encStream = new CryptoStream(fout,
rc2.CreateDecryptor(key, IV), CryptoStreamMode.Write);= rc2.KeySize;(rdlen <
totlen)
{= fin.Read(bin, 0, 100);.Write(bin, 0, len);= rdlen + len;
}.Close();
}void button1_Click(object sender, EventArgs e)
{.FileName = "";.Filter = "RC2 key file|
*.rc2key";(saveFileDialog1.ShowDialog() == DialogResult.OK)
{CryptoServiceProvider rc2 = new
RC2CryptoServiceProvider();.GenerateKey();= rc2.KeySize;=
saveFileDialog1.FileName;fkey = new FileStream(saveFileDialog1.FileName,
FileMode.Create, FileAccess.Write);.Write(rc2.Key, 0, rc2.Key.Length);.Close();
}(key != "" & IV != "")
{.Enabled = true;
}
}void button2_Click(object sender, EventArgs e)
{.FileName = "";.Filter = "RC2 IV file|
*.rc2IV";(saveFileDialog1.ShowDialog() == DialogResult.OK)
{CryptoServiceProvider rc2 = new RC2CryptoServiceProvider();.GenerateIV();fiv
= new FileStream(saveFileDialog1.FileName, FileMode.Create, FileAccess.Write);=
saveFileDialog1.FileName;.Write(rc2.IV, 0, rc2.IV.Length);.Close();
}(key != "" & IV != "")
{.Enabled = true;
}
}void button3_Click(object sender, EventArgs e)
{.FileName = "";.Filter = "RC2 key file|
*.rc2key";(openFileDialog1.ShowDialog() == DialogResult.OK)
{= openFileDialog1.FileName;
}(key != "" & IV != "")
{.Enabled = true;
}
}void button4_Click(object sender, EventArgs e)
{.FileName = "";.Filter = "RC2 IV file|
*.rc2IV";(openFileDialog1.ShowDialog() == DialogResult.OK)
{= openFileDialog1.FileName;
}(key != "" & IV != "")
{.Enabled = true;
}
}void button5_Click(object sender, EventArgs e)
{.FileName = "";.Filter = "All file| *.*";.FileName =
"";.Filter = "RC2 file|
*.rc2";(openFileDialog1.ShowDialog() == DialogResult.OK)
{(saveFileDialog1.ShowDialog() == DialogResult.OK)
{= DateTime.Now;(openFileDialog1.FileName, saveFileDialog1.FileName, key,
IV);.Text = (DateTime.Now - tim).ToString();
}
}
}void button6_Click(object sender, EventArgs e)
{.FileName = "";.Filter = "RC2 file| *.rc2";.FileName
= "";.Filter = "All file|
*.*";(openFileDialog1.ShowDialog() == DialogResult.OK)
{(saveFileDialog1.ShowDialog() == DialogResult.OK)
{= DateTime.Now;(openFileDialog1.FileName, saveFileDialog1.FileName, key,
IV);.Text = (DateTime.Now - tim).ToString();
}
}
}
}
}System;System.Collections.Generic;System.ComponentModel;System.Data;System.Drawing;System.Linq;System.Text;System.Windows.Forms;System.Security.Cryptography;System.IO;diplom
{partial class Rijnder : Form
{
//rijnderstatic string key = "", IV = "";static int
keysize = 0;tim;static long output = 0;Rijnder()
{();
}
//void Encrypt(String inName, String outName)
{fin = new FileStream(inName, FileMode.Open, FileAccess.Read);fout = new
FileStream(outName, FileMode.OpenOrCreate, FileAccess.Write);.SetLength(0);[]
bin = new byte[100];rdlen = 0;totlen = fin.Length;len;rij = new
RijndaelManaged();encStream = new CryptoStream(fout, rij.CreateEncryptor(),
CryptoStreamMode.Write);= rij.KeySize;(rdlen < totlen)
{= fin.Read(bin, 0, 100);.Write(bin, 0, len);= rdlen + len;
}= fout.Length + rij.Key.Length + rij.IV.Length;.Close();
}
//static void EncryptData(String inName, String outName, String desKey,
String desIV)
{[] key, IV;
//Create the file streams to handle the input and output files.fin = new
FileStream(inName, FileMode.Open, FileAccess.Read);fout = new
FileStream(outName, FileMode.OpenOrCreate, FileAccess.Write);fkey = new
FileStream(desKey, FileMode.Open, FileAccess.Read);fIV = new FileStream(desIV,
FileMode.Open, FileAccess.Read);.SetLength(0);= new byte[fkey.Length];= new
byte[fIV.Length];.Read(key, 0, (int)fkey.Length);.Read(IV, 0, (int)fIV.Length);
//Create variables to help with read and write.[] bin = new byte[100];
//This is intermediate storage for the encryption.rdlen = 0; //This is the
total number of bytes written.totlen = fin.Length; //This is the total length
of the input file.len; //This is the number of bytes to be written at a
time.reij = new RijndaelManaged();encStream = new CryptoStream(fout,
reij.CreateEncryptor(key, IV), CryptoStreamMode.Write);= reij.KeySize;
//Read from the input file, then encrypt and write to the output
file.(rdlen < totlen)
{= fin.Read(bin, 0, 100);.Write(bin, 0, len);= rdlen + len;
}.Close();= fout.Length;
}static void DecryptData(String inName, String outName, String desKey,
String desIV)
{[] key, IV;
//Create the file streams to handle the input and output files.fin = new
FileStream(inName, FileMode.Open, FileAccess.Read);fkey = new
FileStream(desKey, FileMode.Open, FileAccess.Read);fIV = new FileStream(desIV,
FileMode.Open, FileAccess.Read);fout = new FileStream(outName,
FileMode.OpenOrCreate, FileAccess.Write);.SetLength(0);= new byte[fkey.Length];=
new byte[fIV.Length];.Read(key, 0, (int)fkey.Length);.Read(IV, 0,
(int)fIV.Length);
//Create variables to help with read and write.[] bin = new byte[100];
//This is intermediate storage for the encryption.rdlen = 0; //This is the
total number of bytes written.totlen = fin.Length; //This is the total length
of the input file.len; //This is the number of bytes to be written at a time.
reij = new RijndaelManaged();encStream = new CryptoStream(fout,
reij.CreateDecryptor(key, IV), CryptoStreamMode.Write);= reij.KeySize;
//Read from the input file, then encrypt and write to the output
file.(rdlen < totlen)
{= fin.Read(bin, 0, 100);.Write(bin, 0, len);= rdlen + len;
}.Close();
}void button1_Click(object sender, EventArgs e)
{.FileName = "";.Filter = "RIJNDAEL key file|
*.rijkey";(saveFileDialog1.ShowDialog() == DialogResult.OK)
{rij = new RijndaelManaged();.GenerateKey();= rij.KeySize;=
saveFileDialog1.FileName;fkey = new FileStream(saveFileDialog1.FileName,
FileMode.Create, FileAccess.Write);.Write(rij.Key, 0, rij.Key.Length);.Close();
}(key != "" & IV != "")
{.Enabled = true;
}
}void button4_Click(object sender, EventArgs e)
{.FileName = "";.Filter = "RIJNDAEL IV file|
*.rijIV";(saveFileDialog1.ShowDialog() == DialogResult.OK)
{rij = new RijndaelManaged();.GenerateIV();fiv = new
FileStream(saveFileDialog1.FileName, FileMode.Create, FileAccess.Write);=
saveFileDialog1.FileName;.Write(rij.IV, 0, rij.IV.Length);.Close();
}(key != "" & IV != "")
{.Enabled = true;
}
}void button5_Click(object sender, EventArgs e)
{.FileName = "";.Filter = "RIJNDAEL key file|
*.rijkey";(openFileDialog1.ShowDialog() == DialogResult.OK)
{= openFileDialog1.FileName;
}(key != "" & IV != "")
{.Enabled = true;
}
}void button6_Click(object sender, EventArgs e)
{.FileName = "";.Filter = "RIJNDAEL IV file|
*.rijIV";(openFileDialog1.ShowDialog() == DialogResult.OK)
{= openFileDialog1.FileName;
}(key != "" & IV != "")
{.Enabled = true;
}
}void button2_Click(object sender, EventArgs e)
{.FileName = "";.Filter = "All file| *.*";.FileName =
"";.Filter = "RIJNDAEL file|
*.rij";(openFileDialog1.ShowDialog() == DialogResult.OK)
{(saveFileDialog1.ShowDialog() == DialogResult.OK)
{= DateTime.Now;(openFileDialog1.FileName, saveFileDialog1.FileName, key,
IV);.Text = (DateTime.Now - tim).ToString();
}
}
}void button3_Click(object sender, EventArgs e)
{.FileName = "";.Filter = "RIJNDAEL file|
*.rij";.FileName = "";.Filter = "All file|
*.*";(openFileDialog1.ShowDialog() == DialogResult.OK)
{(saveFileDialog1.ShowDialog() == DialogResult.OK)
{= DateTime.Now;(openFileDialog1.FileName, saveFileDialog1.FileName, key,
IV);.Text = (DateTime.Now - tim).ToString();
}
}
}
}
}System;System.Collections.Generic;System.ComponentModel;System.Data;System.Drawing;System.Linq;System.Text;System.Windows.Forms;System.Security.Cryptography;System.IO;diplom
{partial class RIPEMD160 : Form
{static int keysize;static long output;DateTime tim;RIPEMD160()
{();
}void Hash(string inName,string outName)
{fin = new FileStream(inName, FileMode.Open, FileAccess.Read);fout = new
FileStream(outName, FileMode.OpenOrCreate, FileAccess.Write);.SetLength(0);[]
hashValue;Managed rip = new RIPEMD160Managed();= rip.ComputeHash(fin);=
rip.HashSize;.Write(hashValue,0,hashValue.Length);= fout.Length +
fin.Length;.Close();.Close();
}string Chek(string inName, string outName)
{s=string.Empty;fin = new FileStream(inName, FileMode.Open,
FileAccess.Read);fout = new FileStream(outName, FileMode.Open,
FileAccess.Read);[] hashValue;[] hashValue1 = new byte[fout.Length];Managed rip
= new RIPEMD160Managed();= rip.ComputeHash(fin);.Read(hashValue1, 0,
(int)fout.Length);.Close();.Close();(var i in hashValue.Except(hashValue1))
{= "Не идентичные";
}(s == string.Empty) { s = "Идентичные"; }s;
}void button1_Click(object sender, EventArgs e)
{.FileName = "";.Filter = "All file| *.*";.FileName =
"";.Filter = "RIPEMD160 file|
*.rip";(openFileDialog1.ShowDialog() == DialogResult.OK)
{(saveFileDialog1.ShowDialog() == DialogResult.OK)
{= DateTime.Now;(openFileDialog1.FileName,
saveFileDialog1.FileName);.Text = (DateTime.Now - tim).ToString();
}
}
}void button2_Click(object sender, EventArgs e)
{.FileName = "";.Filter = "All file| *.*";.FileName =
"";.Filter = "RIPEMD160 file|
*.rip";(openFileDialog1.ShowDialog() == DialogResult.OK)
{(openFileDialog2.ShowDialog() == DialogResult.OK)
{.Text = Chek(openFileDialog1.FileName, openFileDialog2.FileName);
}
}
}
}
}System;System.Collections.Generic;System.ComponentModel;System.Data;System.Drawing;System.Linq;System.Text;System.Windows.Forms;System.IO;System.Security.Cryptography;diplom
{partial class SHA512 : Form
{static int keysize;static long output;DateTime tim;SHA512()
{();
}void Hash(string inName, string outName)
{fin = new FileStream(inName, FileMode.Open, FileAccess.Read);fout = new
FileStream(outName, FileMode.OpenOrCreate, FileAccess.Write);.SetLength(0);[]
hashValue;CryptoServiceProvider sha = new SHA512CryptoServiceProvider();=
sha.ComputeHash(fin);= sha.HashSize;.Write(hashValue, 0, hashValue.Length);=
fout.Length + fin.Length;.Close();.Close();
}string Chek(string inName, string outName)
{s = string.Empty;fin = new FileStream(inName, FileMode.Open,
FileAccess.Read);fout = new FileStream(outName, FileMode.Open,
FileAccess.Read);[] hashValue;[] hashValue1 = new byte[fout.Length];CryptoServiceProvider
sha = new SHA512CryptoServiceProvider();=
sha.ComputeHash(fin);.Read(hashValue1, 0,
(int)fout.Length);.Close();.Close();(var i in hashValue.Except(hashValue1))
{= "Не идентичные";
}(s == string.Empty) { s = "Идентичные"; }s;
}void button1_Click(object sender, EventArgs e)
{.FileName = "";.Filter = "All file| *.*";.FileName =
"";.Filter = "SHA512 file|
*.sha512";(openFileDialog1.ShowDialog() == DialogResult.OK)
{(saveFileDialog1.ShowDialog() == DialogResult.OK)
{= DateTime.Now;(openFileDialog1.FileName,
saveFileDialog1.FileName);.Text = (DateTime.Now - tim).ToString();
}
}
}void button2_Click(object sender, EventArgs e)
{.FileName = "";.Filter = "All file| *.*";.FileName =
"";.Filter = "SHA512 file|
*.sha512";(openFileDialog1.ShowDialog() == DialogResult.OK)
{(openFileDialog2.ShowDialog() == DialogResult.OK)
{.Text = Chek(openFileDialog1.FileName, openFileDialog2.FileName);
}
}
}
}
}System;System.Collections.Generic;System.ComponentModel;System.Data;System.Drawing;System.Text;System.Windows.Forms;System.Security.Cryptography;System.IO;diplom
{partial class tdes : Form
{static string key="", IV="";static int keysize =
0;tim;static long output = 0;tdes()
{();
}
//void Encrypt(String inName, String outName)
{fin = new FileStream(inName, FileMode.Open, FileAccess.Read);fout = new
FileStream(outName, FileMode.OpenOrCreate, FileAccess.Write);.SetLength(0);[]
bin = new byte[100];rdlen = 0;totlen = fin.Length;len;tdes = new
TripleDESCryptoServiceProvider();encStream = new CryptoStream(fout,
tdes.CreateEncryptor(), CryptoStreamMode.Write);= tdes.KeySize;(rdlen <
totlen)
{= fin.Read(bin, 0, 100);.Write(bin, 0, len);= rdlen + len;
}= fout.Length + tdes.Key.Length + tdes.IV.Length;.Close();
}
//static void EncryptData(String inName, String outName, String tdesKey,
String tdesIV)
{[] key, IV;
//Create the file streams to handle the input and output files.fin = new
FileStream(inName, FileMode.Open, FileAccess.Read);fout = new
FileStream(outName, FileMode.OpenOrCreate, FileAccess.Write);fkey = new
FileStream(tdesKey, FileMode.Open, FileAccess.Read);fIV = new
FileStream(tdesIV, FileMode.Open, FileAccess.Read);.SetLength(0);= new
byte[fkey.Length];= new byte[fIV.Length];.Read(key, 0,
(int)fkey.Length);.Read(IV, 0, (int)fIV.Length);
//Create variables to help with read and write.[] bin = new byte[100];
//This is intermediate storage for the encryption.rdlen = 0; //This is the
total number of bytes written.totlen = fin.Length; //This is the total length
of the input file.len; //This is the number of bytes to be written at a
time.tdes = new TripleDESCryptoServiceProvider();encStream = new
CryptoStream(fout, tdes.CreateEncryptor(key, IV), CryptoStreamMode.Write);=
tdes.KeySize;
//Read from the input file, then encrypt and write to the output
file.(rdlen < totlen)
{= fin.Read(bin, 0, 100);.Write(bin, 0, len);= rdlen + len;
}= fout.Length;.Close();
}static void DecryptData(String inName, String outName, String tdesKey,
String tdesIV)
{[] key, IV;
//Create the file streams to handle the input and output files.fin = new
FileStream(inName, FileMode.Open, FileAccess.Read);fkey = new
FileStream(tdesKey, FileMode.Open, FileAccess.Read);fIV = new
FileStream(tdesIV, FileMode.Open, FileAccess.Read);fout = new
FileStream(outName, FileMode.OpenOrCreate, FileAccess.Write);.SetLength(0);=
new byte[fkey.Length];= new
byte[fIV.Length];.Read(key,0,(int)fkey.Length);.Read(IV, 0, (int)fIV.Length);
//Create variables to help with read and write.[] bin = new byte[100];
//This is intermediate storage for the encryption.rdlen = 0; //This is the
total number of bytes written.totlen = fin.Length; //This is the total length
of the input file.len; //This is the number of bytes to be written at a
time.tdes = new TripleDESCryptoServiceProvider();encStream = new
CryptoStream(fout, tdes.CreateDecryptor(key, IV), CryptoStreamMode.Write);=
tdes.KeySize;
//Read from the input file, then encrypt and write to the output
file.(rdlen < totlen)
{= fin.Read(bin, 0, 100);.Write(bin, 0, len);= rdlen + len;
}.Close();
}void Form1_Load(object sender, EventArgs e)
{
}void button1_Click(object sender, EventArgs e)
{.FileName = "";.Filter = "TDES key file|
*.tdeskey";(saveFileDialog1.ShowDialog() == DialogResult.OK)
{tdes = new TripleDESCryptoServiceProvider();.GenerateKey();=
saveFileDialog1.FileName;fkey = new FileStream(saveFileDialog1.FileName,
FileMode.Create, FileAccess.Write);.Write(tdes.Key, 0,
tdes.Key.Length);.Close();
}(key != "" & IV != "")
{.Enabled = true;
}
}void button4_Click(object sender, EventArgs e)
{.FileName = "";.Filter = "TDES IV file|
*.tdesIV";(saveFileDialog1.ShowDialog() == DialogResult.OK)
{tdes = new TripleDESCryptoServiceProvider();.GenerateIV();fiv = new
FileStream(saveFileDialog1.FileName, FileMode.Create, FileAccess.Write);=
saveFileDialog1.FileName;.Write(tdes.IV, 0, tdes.IV.Length);.Close();
}(key != "" & IV != "")
{.Enabled = true;
}
}void button5_Click(object sender, EventArgs e)
{.FileName = "";.Filter = "TDES key file|
*.tdeskey";(openFileDialog1.ShowDialog() == DialogResult.OK)
{= openFileDialog1.FileName;
}(key != "" & IV != "")
{.Enabled = true;
}
}void button6_Click(object sender, EventArgs e)
{.FileName = "";.Filter = "TDES IV file|
*.tdesIV";(openFileDialog1.ShowDialog() == DialogResult.OK)
{= openFileDialog1.FileName;
}(key != "" & IV != "")
{.Enabled = true;
}
}void button2_Click(object sender, EventArgs e)
{.FileName = "";.Filter = "All file| *.*";.FileName =
"";.Filter = "TDES file|
*.tdes";(openFileDialog1.ShowDialog() == DialogResult.OK)
{(saveFileDialog1.ShowDialog() == DialogResult.OK)
{=DateTime.Now;(openFileDialog1.FileName,
saveFileDialog1.FileName,key,IV);.Text = (DateTime.Now - tim).ToString();
}
}
}void button3_Click(object sender, EventArgs e)
{.FileName = "";.Filter = "TDES file|
*.tdes";.FileName = "";.Filter = "All file|
*.*";(openFileDialog1.ShowDialog() == DialogResult.OK)
{(saveFileDialog1.ShowDialog() == DialogResult.OK)
{= DateTime.Now;(openFileDialog1.FileName, saveFileDialog1.FileName, key,
IV);.Text = (DateTime.Now - tim).ToString();
}
}
}
}
}