DES алгоритмі арқылы шифрлеу

АЛМАТЫ ЭНЕРГЕТИКА ЖӘНЕ БАЙЛАНЫС УНИВЕРСИТИЕТІ

 

Компьютерлік технологиялар кафедрасы

 

 

 

 

 

 

 

 

 

 

«Ақпараттық қауіпсіздік негіздері» пәні бойынша

Курстық жұмыс

Тақырыбы: «DES  алгоритмі арқылы шифрлеу»

 

 

 

 

 

 

 

 

 

Орындаған: БВТк09-02 ст

 Досмухамедова Ж.Х

Тексерген:доцент Шайхин Б.М

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Алматы 2011ж

                                          Жоспар:

 

Кіріспе........................................................................................................................3

Алгоритм және оның қасиеттері:

а) Алгоритм DES.............................................................................................4

б) Алгоритм  New DES...................................................................................6

Криптографиялық алгоритмдердің баға критерілері.............................................7

Блоктік шифр алгоритмінің бағалануының жылдамдығы..................................10

Қолданушы интерфейс  түсініктемесі...................................................................12

Программа листингі...............................................................................................13

Қорытынды..............................................................................................................25

Пайдаланылған әдебиеттер тізімі..........................................................................26

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Кіріспе

 

     Криптография – бұл  ақпаратты қорғау ғылымы. Қорғау  шифрлеу арқылы жетеді,яғни арнайы  кілттік ақпаратты білмей қорғалған  кіріс деректерінің қиын ашылуын жасйды. Кілт жасырын сақталынатын және дәл осы уақытта мүмкін болатын шифрленуді анықтайтын, криптожүйенің оңай ауыстырылатын бір бөлігі деп түсіндіріледі.

    Шифрлеу методы кем  дегенде екі қасиеттерге болу  үшін:

  • Заңды алушы кері айналымды орындау және хатты шифрді аша алады;
  • Хатты тартып алған қарсыластың криптоаналитигі

     Криптография көне  замандардан да белгілі және  осы уақытқа дейін тек өкіметтің  және әскери мекемелердің привелегиясы  болып келді. 1949 жылы К.Шенонаның  «Кибернетика және ақпараттың теориялық жұмыстары» атты кітаптың басылымынан кейін жағдай күрт өзгерді. Криптография көптеген ғалымдардың назарын аударды. DES стандартты шифрлеу коммерциялық жүйелерде үлкен қолданысқа ие болды. Осы стандарттың енгізілуі унификациялы жақсы үлгі және қорғау құралдарының стандартизациясы болып келді. Үлкен масштабты ақпаратты қорғау жүйесінің үлгісі  ретінде 1984 жылғы АҚШ-тың қаржы Министрлігінің дерективасы болып келеді, яғни барлық қоғамдық және жеке меншік  АҚШ өкіметмен байланысы бар ұйымдар DES шифрлеу прцедурасын енгізу міндетті болд және үлкен банктерде осы жүйені енгізді.

Бұл курстық жұмыста DELPHI программалау тілінде DES алгоритмін программасын (консоль түріндегі нұсқасы және пайдаланушының графиктік интерфейсінің қосымшасын) жаздым.

DES  алгоритммен істейтін шифрлеуіш  стандартты аппаратура ретінде  Cidex – HX  құрылғысын атауға  болады. Оның шифрлеу жылдамдығы 56 Кбит/с – 7  Мбит/с. Автономды  шифрлеуіш блок DES 2000 шығарылды,онда  да DES шифрі қолданылады, оның  шифрлеу жылдамдығы 2,4 Кбит/с – 19,2 Кбит/с.  Дербес компьютерлердің таралуына байланысты оларға программалық құралдарды қорғау эффективті болып келеді. Осылай DES алгоритміндегі CTA (Computer Intelligence Access) ақпараттарын шифрлеу және дешифрлеу программалық пакеті жасалынды.  Ал 1992 жылдың қаңтарынан бастап DES-ті тек  коммерциялық жүйелерде қолданылады.

 

 

 

 

 

      Алгоритм және оның қасиеттері.

а) Алгоритм DES

        DES алгоритмі  өзін блоктік шифр ретінде  ұсынатын, 64 битті деректерді шифрлауға  арналған блок. Алгоритм кірісіне 64 битті блок ашық текст түседі, ал шығысында 64 битті блок шифрмәтіні беріледі. Кілттің  ұзындығы 56 бит. 56 биттік кілттің әр қайсысы кіл ретінде қызмет ете алалды және оны кез келген  уақытта өзгертуге болады. Құпиялылық кілтпен анықталады. Реттік сандар әлсіз кілттерге сенеді, бірақ олардан қашып кетуге болады.  Алгоритм екі негізгі шифрлық методтық бөліктерге бөлінеді: тарату және орын ауыстыру.  DES раунды  кілтке тәуелді осы әдістердің мәтінге бірлік комбинациясын қолдану болып табылады. DES өзіне 16 раундты қосады, ашық мәтінге бір комбинация  16 рет қолданылады. Алгоритмде тек қана стандарттық арифметика және 64 биттік логикалық операцияда қолданылады, сондықтан да ол 70 жылдардың 2 ші жартысында аппаратурада ұйымдастырылады. Алгоритмде қайталанбалар арнайы микросызбалар ұйымы үшін идеалды қылады. Алғашқы программалық ұйымдар баяу болған , ал қазіргі заманғы программалар олардан әлдеқайда жылдам.

          Ашық  текстке 64 биттік блокті DES опирирует. Бірінші ауыстырылымнан  кейін 32 битті блок оң және сол бөліктерге бөлінеді. Содан кейін бірдей 16 раундық әрекеттер орындалады, яғни мәліметтер кілтпен F функциясы деп аталатында байланысады. 16 раундтан кейін оң және сол бөліктер бірігеді де алгоритм соңғы орын ауыстыруларын аяқтайды..

  

 

 

 

  Әр бір раундта кілттік  биттер қозғалады, содан кейін  56 биттік кілттің ішінен 48 бит  таңдалады. Бұл 4 операция Fфункциясында  орындалады.  Содан кейін F функциясынан  шыққан нәтиже сол жақ бөлік  пен XOR операциясының көмегімен  қойылады.. Бұл жағдай 16 рет қайталанады, DES алгоритмінің16 раундын түзе отырып..

Алғашында  DES – тің 64 биттік кілті әрбір сегізінші битті тастайтын 56 биттік кілтке дейін қысқартылады. Бұл биттер тек қана нақтылықты бақылау үшін қолданылады және кілтке қатысты қателіктерді тексереді.  56 биттік кілтті шығарғаннан кейін  16 раундты DES қа  жаңа 48 битовый кілтастары генерацияланады.

 

 

 

Б) Алгоритм  New DES

DES орнына   Роберт Скотпен 1985ж алгоритм New DES проетілеген. Бұл алгоритм –  DES атынан көрінетіндей оның модификация болы табылмайды. New DES DES –ке қарағанда қарапайым, оның алғашқы және соңғы орын ауыстырулары жоқ. барлық оперциялар бүтін операциялармен орындалады. ашық мәтіннің болгы 1 байтты сегіз блок астарына бөлінеді: В0, В1..., В6, В7. Содан болк астарлары 17 раундтан өтеді. әрбір раунд сегіз этаптан тұрады. әрбір этаптағы блок астарлары біреуі ХОR операциясының кілттік бөлігіне ұшырайды, F функциясының көмегімен басқа байттарға ауыстырылады, ХОR операциясы нәтижесі ауыстырылатын басқа блок астарларына ұшырайды. 120 – битті кілттер 15 блок астарларына бөлінеді. К0, К1, ... К13, К14. New DES шифрлық алгоритмі мына 4-суретте көрсетілген.

 

             

 

 

 

 

 

 

              Криптографиялық алгоритмдердің баға критерілері

   Криптоаналитикалық тұрақтылық  түсінігі алгоритм шифріне криптоаналитикалық  шабуылдың қиындығы мен және үш көлемді [1, 2] мен сипатталады:

      • мәліметтердің қиындығы – алгоритм  шифрының криптоаналитикалық шабуылына қажетті ұсталынған мәліметтердің саны.
      • есептеу қиындығы – алгоритм  шифріне шабуылға қажетті операциялар саны.
      • жадының қиындығы – шабуылға  қажетті жады көлемі

  Жалпыланған критерилер негізінде  баға тұрақтылығы үшін осылардың  ішінен максималды көлемін алуға  болады. Баға тұрақтылығы үшін  осылардың ішінен максимал көлемін  алып және жалпылама негізіндегі бағаны қолдануға болады.

   Криптографикалық тұрақтылық  шифры нақты (толық  шектен  тыс әдістен басқа, ашық тиімді  алгоритмнен тұрмайтын) және нақты  емес (абсолютті тұрақтылығы жоқ)  кейбір математикалық есептеу  қиындықтарына негізделген тұрақтылықтан құралады. Кейбір типтегі операциялардың санын есептеу тұрақтылығын бағалануын қолданады, яғни хабарламаны дешифрлеуге немесе кілтті анықтау үшін қажет. Бір кілтті тексеру циклі тұрақтылық бағасын алу үшін ең тиімді операция болып табылады. Дешифрлеудің еңбек көлемділігі ақпарат санымен сипаттамасына байланысты, ол аналитиктің қолында тұрады:

    1. Тек шифр мәтін негізінде анализ – аналитик  шифрлеу механизмін біледі және немесе көлемді шифр мәтінімен қол жеткізуге болады, яғни байланыс сымдарына физикалық қол жеткізімділігі бар сыртқы бұзушы моделіне сәйкес.
    2. Берілген ашық мәтіндегі анализ – криптоаналитикке  шифр мәтіні және шығыс ақпаратының сол немесе басқа бөлігі белгілі. Жеке жағдайларда шығыс мәтіні және шифр мәтіні арасындағы сәйкестілік, яғни аналитик немесе n көлемді хабарламаны шифрлеу және оған сәйкестелген ашық мәтін. Мұндай шабуыл анықталған мәліметтер  блогы қайталанған кезде стандартты формада дайындалатын стандартты құжаттарды шифрлеу кезінде мүмкін.
    3. Ашық мәтінде таңдалған анализ – криптоаналитик  арнайы таңдалған мәтінді шифрлеу құрылғысына енгізуін және криптобағдарламаның алуына болады, құпиялық кілттің басқарылуымен құралған, яғни n көлемді ашық мәліметтер массивімен таңдалынған шифрланудың нәтижесін алу үшін аналитикалық мүмкіншілігі бар, сәйкесінше ішкі бұзушылардың модулі, шифрлаудың шабуылына қатыстырылған құпиялық кілтті білмейтін тұлғалар, бірақ – та  шифрлау құралдарына рұқсаты бар өзінің қызметіне сәйкес.
    4. Шифр мәтін негізіндегі таңдалған анализ шифрлік кілттің минималды еңбек көлемін ол есептей алатын дешифрлеу мәтінінің шығысында арнайы тәсілмен таңдалып алынған дешифрлеуді қарсыластарының қою мүмкіншілігі бар, яғни дешифрлеу  құрылғысына енуге сәйкес n көлемді хабарларды таңдалған шифрлаудың аналитиктің қолында.
    5. Икемделген мәтін негізіндегі шабуыл-шабушы мәтіндерді шифрлау немесе дешифрлау кезінде білдіріпп қояды, әр бір жаңа мәліметтердің таңдап алдыңғы түрленген бөліктің нәтижесіне тәуелді.

   Элементарлы операциялармен  өлшенетін шифр жұмысын сипаттаушы  деп аталатын N әріптен таңдаланатын криптобағдарлама бойынша керекті анықтаушы кілт W (N) орташа жұмысының көлемі  [3,4] ықтималдылылығы мен сәйкестендірілген барлық кілтердің орташа мәні ретінде алынады.

   N параметрлі мәліметтердің  кейбір соңғы жеткілікті еңбек  көлемділігіне шекарасына жетеді, өйткені кейбір үлкейтілген еңбек көлемінің анализіне  ынталайды, жұмысының бағалылығын сипаттайтын қол жеткізімділік деп атайды. [4 ] – те  бекітілгендей еңбек көлемінің  анализінің  мәліметтерінің нақты тәсілінің амалы нақты емес шифрларының алынуы мүмкін емес, криптоанализдің түрі кезінде белгілі шифрлардың тұрақтылығын  тексерулерде барлық бағалар бағаналады, қазіргі бар тәсілдердің төменделуі анализдердің тәсілдері болашақта өңделіп шықпайтындылығы немесе келешекте өңделіп шықпайтыннының кепілділігі жоқ. Сондықтанда қазіргі кездегі криптоаналитиктің тұрақтылығына негізделеді.

     Қазіргі кезде криптоаналитиктің  келесі тәсілдері бөлінген:

                            1. Мүмкін болатын кілттердің шектен  шығуы

                            2. Жиілік анализ

                            3. Диференнциалдық тәсіл

                            4. Сызықтық тәсіл

    Мүмкін болатын кілтердің  шектен шығуы

Белгілі шығыс мәліметтердің криптоанализында көбінесе актуалды болып толық шектен кілттердің жалғыз қолданатын тәсілдері белгілі. Берілген тәсілдің негізгі кемшілігі болып ұзын кілттің криптоанализдік уақыттың экспоненциалды тәуелділігі болып табылады. Сондықтан да бұл тәсіл жоғарғы шекара ретінде таңдалынған криптотұрақтылық шифрінің бағасында –егер де микропроцессорлар бұзушылар тәсілі тек қана шектен тыс тәсілмен шешетін болса, финанстық немесе уақыттық ойлармен іске асырылса, берілген шифр тұрақты деп саналады. Сонымен қатар бұл тәсіл басқа да криптоаналитикалық алгоритмдердің тиімділігін бағалау қолданылады, ал басқа да тәсілдер төмен еңбек көлемді қамтамасыз ету керек.

 Бұл тәсілдің оптимизациясы  бар, бұл [ 1, 2 ]  шабуыл сөздігімен  байланысты қолданылады. Бұл хабарларды  жіберуші кілттік кезектілікті  сақтайтын басқаларға қарағанда  толығымен байқаусыздан қолданылып идея базаланады. Сондықтан ең алдымен сөздіктегі мүмкін болатын кілтті көру қажет, яғни еңбек көлемділігінің шифрді ашу, қысқарту мүмкін. Мұндай амалдың жоғарғы тиімділігі іс–тәжірибе зерттеуде көрсетті.

 

    Жиілік аналитик

Нақты тілдік мәтіндерді сипатайтын жиіліктегі анализдерді ескеретін, сәйкес келетін символдық тұрақтылықты және үлкен артықшылыққа ие. Тәсілдік принципі криптопрограмманың символдарының жиілігін есептеуден тұрады және ашық мәтінді модельдердің жиіліктерінің есептеуін салыстырады. Ашық мәтінді және криптограммаға ажырылатын алфавит шифрының тәсілінің артықшылығы қолданылуында болып табылады. Ашық мәтіннің математикалық моделін тұрғызуда ашық мәтінді сипаттайтын жиіліктерін құруға қолданады. Жеткілікті ұзындықты мәтіндік тұрақтылық пен есептеп зерттегенде қолданылады. Ашық мәтін реализацияланған эргодикалық байқаусыз дискреттік уақытының процессімен немесе соңғы санының жағдайы модель Маркованың біркелкілік тізбегімен бейнеленіп қарастырылады. Модельдің шығу кезінде алынатын байланысты мәтіндерге өте жоғарғы реттері жақындалып сәйкестендірілген . Критерилерді негізгі стандартты әдістердің статистикалық гепотизада құралады немесе криптограммаға тиым салынған; негізінде меңгерілген (кейбір сирек алынатын мәтінге қатысуы мәнсіз кезектелген белгілер алынады). Ашық мәтінде жаңа формальданған критерилерді талап етілетін (мәтінді емес мәліметтерге) арнайы алфавиттер қолданылады, кезектелген шығыс спецификациялық формалдауды ескереді өзінен-өзі қиын тапсырма болып табылады қосымша зерттеулермен байланысты.

     Тілдерге арналған  критерилерді құру қажеттіліктердің  статикалық қатыспауын сипаттайтын  (символдардың пайда болу мүмкіншілігі  орналастырулары біркелкі) іс-тәжірибеде  шешілмейтін тапсырма болып табылады.

 

    Криптоанализдің дифференциалды тәсілі

    Дифференциалды криптоанализ  – бұл  блоктік шифрдың құпия  кілтін шешуге тырысуы r разрядты  рауындылық функция криптографикалық  әлсіз цифрлық операциялар шифрын  қайта қолдануға неггізделген. Анализді  болжау кезінде, әр циклда өзінің шифрлық ішкі кілті қолданылады. ДКА таңдалған, сонымен қатар әйгілі ашық мәтіндерді қолданады. Мұндай r циклдық шифрларды ашу мүмкіндігі дифференциалды қатысуына байланысты, ықтималдыққа ие. Бұл әдістің идеясы соңғы циклға арналған дифференциалдана іздеуден құралған. Оның негізінде циклдық ішкі кілтті анықтауға болады, содан кейін процедура қайталанады.Дифференциалды анализдің ерекше қасиеттері, ол мүлдем шифрдың алгебралық құрамында қолданылмайды сызықтылығы, тразентивтік, жабдықтық және т.б. дифференциалдық ықтималдылығы негізінде біркелкі болады.

 

 

Криптоанализдің сызықтық тәсілі

     Әдетте шифрлеу кезінде  2 модуль бойынша кілттік мәтінді  қосу және тарау  және араластыру  операциясын қолданылады. Ашық  және шифрленген мәтіндерді білетіндігіне   болжамды көп жағдайда шифрлау барысында араластыру және шашырату операциялары бойынша кілттер арқылы модуль 2 бойынша қосу қолданылады. Бұл әдіс әйгілі сызықтық комбинацияға қажетті типтердің әрбір биттерінің табуға арналған шифр шығысын белгілеуші сызықтық аппроксимация түсіндіруге бағытталған. Криптоанализ әдістерінің автоматтандыры-луы ЭЕМ көмегімен типтердің шектен асуы үшін алынатын нәтижелерді бағалауға арналған ашық мәтіндердің адекватты математикалық моделін құруды талап етеді. Көп жағдайда критоанализ табыстылығы нақтылы емес тілдерде ашық мәтіннің арақашықтылығына негізделеді. Сондықтанда шифрлау алдында мәліметтердің шектен тыс көбеюін төмендетпес үшін, яғни аралықтарды қысу нәтижесінде алынатын өзгерістерге жеткізбеу керек. Алдындағы қысу әдістерін пайдалану шектен тыс көбеюмен қатар ашық мәтін көлемінің жинақталу арқасында яғни көп уақытты алатын шифрлау процесін тездетуге әкеп соқтырады.

 

 

 

Блоктік шифр алгоритмінің бағалануының жылдамдығы

     Кез-келген криптографикалық  алгоритмдердің маңызды параметрі оның қалыптылығы мен қатар жылдамдылығы болып табылады. Объективті бағаның жылдамдылығын алу үшін алгоритмді шифрлау сипатталуын іске    асырылуын тәулсіз қолдау програмалық іске асырылуда алгоритм бағалылығының программа оптимизациясына тәуелді және мәліметтер базасының архитектурасының анықталған ориентация қолдану қажет. Алгоритмнің жылдамдығын теңестіре отырып бағалау үшін криптографиялық өзгеру циклын құраушы кейбір элементарлы операциялар санының ішкі есеп беруіне негізделген методиканы ұсыну пайдаланылады.

    Интер активті блоктік  шифрлауды анализдеу нәтижесінде  жылдамдығын бағалауда арналған  элементарлы операциялар реті  келесі операциялардың пайдалануын  ұсынады:

 – гаммирлеу (XOR) – g;

 – көбейту – s;

 – жылжыту – m;

– кесте түрінде орналастыру  (S – блокті алгоритмдер) – t.

 Элементарлы операцияларды  бағалау үшін арналған  блоктік  шифрлаудағы кең таралумен ерекшелінеді. Мәселен кейбір шифрлауда кездесетін  беттік орналастыру биттердің  саны бойынша жылжыту операциясын  пайдалану ұсынылады. Қосу және көбейту операциялары алгоритмді анықтайтын мәліметтерді ұсынуға қажетті және разрядтық ұяшықтар ұзындығы мен сәйкес келетін кейбір модульдер бойынша орындалады. Мысалы: егер алгоритм 16 разрядтық мәліметтермен жұмыс істеуге болатын болса, онда қосу және көбейту 216 модулі бойынша орындалады, ал 32 разрядтық мәліметтер үшін 232 модулі бойынша т.с.с

        Осыларды салыстыруға  прототип режимінде DES, NEWDES алгоритмін  алайық. Себебі бұл алгоритмдер  үшін қалыптылық және жылдамдылық   ерекшеліктері тән. Сонымен қатар бұлар криптографикалық алгоритмдерді аса зерттеген болып табылды.

         DES алгоритмінің  раунды кестелік орналастырулардың кеңейтілген және жинақталған еседі ретінде кілтпен қосу және беттік орналастыруларды келесідей сипаттауға болады:

                     Round DES = 16 * t + 2 * g + 32 * r

Орналастыруды басқарушы және аяқтаушы раунд санының есебімен келесіні аламыз:

DES = 2 * 64 * r + 16 (16 * t + 2 * g + 32 * r) = 640 * r + 256 * t + 32 * g

Ал 17 раундтан DES алгоритмі үшін раундты  былай бағалаймыз:

                    Round New DES = 16 * g + 8 * f

Мұндағы, f – ауыстыру және мәліметтерді біріктіруші раундтық функция осыдан кейін New DES алгоритмінің толығымен келесі үлгі бойынша көрсетуге болады:

New DES = 17 * (16 * g + 8 * (g + t)) = 272 * g + 136 * g +136 * t

Операциялар санынан алынған бағалауды 2 – кестедегідей біріктіруге болады:

Алгоритм 

Жылдамдығы 

DES

DES = 640 * r + 256 * t + 32 * g

New DES

New DES = 272 * g + 136 * f


2-кесте.  Элементарлы операциядағы  блоктік шифрлаудағы алгоритмдердің жылдамдығын салыстыру сипаттамалары

           RSA алгоритмі  блоктік шифрдың басқа алгоритмдердің  және  DES -ке қарағанда өте баяу, яғни DES – тің  программалық  орындалуы жылдам аппаратты орындалуда  (нақты құрылғыға байланысты) -100 есе және 10.000-ге дейін жылдам жұмыс жасайды.

 

 

 

 

 

 

 

 

 

 

 

 

Қолданушы интерфейс  түсініктемесі

 

 

 

Программа интерфейсі негізігі, бір  терезеден тұрады. Жоғарғы бөлігінде  кілт сөз жазатын жолақша бар. Кілт сөз 8 символдан құрылуы тиіс. Ал келесі төменгі қабатына шифрлеуге арналған мәтінді енгізіңіз.

Символдар саны қысқартылған 8 болуы керек, келесі жаңа қатарға өту 2символ болып саналады. Жазуды жеңілдету үшін,  енгізу терезесінде жазылған символдар саны көрсетіледі. Енгізу кезінде мәтін автоматты түрде бинарлық кодқа ауыстырылады. Бұл алгоритм жұмысының көрнектiлiгi үшiн iстелінген.

Мәтінді енгізіп  болғаннан кейін,  шифрлау үшін «Encode» кнопкасын басыңыз. Егер қысқартылған 8 шарты орындалмаса, онда экранға ERROR(қате) хабарламасы шығады.

          Шифрлеу  аяқталғаннан кейін төменгі терезеде шифрленген мәтін және оның бинарлық интерпретациясы пайда болады.

Кері шифрлеу  үшін шифрленген мәтінді қайта енгізіп және дұрыс кілт сөзін жазып «Decode» кнопкасын басыңыз.

Қосымша А.

unit Unit1;

 

interface

 

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, DES, StdCtrls;

 

type

  TForm1 = class(TForm)

    Label1: TLabel;

    Edit1: TEdit;

    Label2: TLabel;

    Memo1: TMemo;

    Button1: TButton;

    Label3: TLabel;

    Memo2: TMemo;

    Button2: TButton;

    Memo3: TMemo;

    Label4: TLabel;

    Memo4: TMemo;

    procedure Button1Click(Sender: TObject);

    procedure Button2Click(Sender: TObject);

    procedure Memo1Change(Sender: TObject);

    procedure FormCreate(Sender: TObject);

    procedure Edit1Change(Sender: TObject);

    procedure Memo2Change(Sender: TObject);

  private

    { Private declarations }

  public

    Data:TBitString;

  end;

 

var

  Form1: TForm1;

 

implementation

 

{$R *.dfm}

 

procedure TForm1.Button1Click(Sender: TObject);

Var

I:Integer;

S:String;

begin

IF ((Length(Memo1.Text)mod 8 <> 0) OR (Length(Edit1.Text)mod 8 <> 0)) Then

  Begin

  MessageBox(Handle,

  'Количество букв  в сообщении должно быть кратоно  8 (перевод строки считается за 2 буквы)'+

  #10#13'Ключ должен  состоять из 8 символов',

  Nil,MB_ICONSTOP);

  Exit;

  End;

SetLength(Data,0);

I:=1;

While I<=Length(Memo1.Text) Do

  Begin

  S:=Copy(Memo1.Text,I,8);

  Data:=ConcatBits([Data,DESEncode(S,Edit1.Text)]);

  I:=I+8;

  End;

Memo2.Text:=BinToAnsiStr(Data);

end;

 

procedure TForm1.Button2Click(Sender: TObject);

var

I:Integer;

begin

IF ((Length(Memo2.Text)mod 8 <> 0) OR (Length(Edit1.Text)mod 8 <> 0)) Then

  Begin

  MessageBox(Handle,

  'Количество букв  в сообщении должно быть кратоно  8 (перевод строки считается за 2 буквы)'+

  #10#13'Ключ должен  состоять из 8 символов',

  Nil,MB_ICONSTOP);

  Exit;

  End;

SetLength(Data,0);

I:=1;

While I<=Length(Memo2.Text) Do

  Begin

  Data:=ConcatBits([Data,DESDecode(Copy(Memo2.Text,I,8),Edit1.Text)]);

  I:=I+8;

  End;

Memo1.Text:=BinToAnsiStr(Data);

end;

 

procedure TForm1.Memo1Change(Sender: TObject);

begin

IF Memo1.Text<>'' Then

  Memo3.Text:=BinToStr(AnsiStrToBin(Memo1.Text))

Else Memo3.Clear;

Label2.Caption:='Message - ('+IntToStr(Length(Memo1.Text))+' characters)';

end;

 

procedure TForm1.FormCreate(Sender: TObject);

begin

Memo1.OnChange(Self);

Edit1.OnChange(Self);

end;

 

procedure TForm1.Edit1Change(Sender: TObject);

begin

Label4.Caption:=IntToStr(Length(Edit1.Text))+' characters';

end;

 

procedure TForm1.Memo2Change(Sender: TObject);

begin

IF Memo2.Text<>'' Then

  Memo4.Text:=BinToStr(AnsiStrToBin(Memo2.Text))

Else Memo4.Clear;

Label3.Caption:='Encoded message - ('+IntToStr(Length(Memo2.Text))+' characters)';

end;

 

end.

Қосымша Б

unit DES;

 

interface

 

Uses Windows, Classes, SysUtils, Math, Dialogs;

 

Type

  TBitString = Array of Boolean;

  PBitString = ^TBitString;

 

  TSplitKeyParts = record

    C:TBitString;

    D:TBitString;

    end;

  TSplitKey = Array[0..16]Of TSplitKeyParts;

 

  TConcatKey = Array[0..15]Of TBitString;

 

  TIPKeyParts = record

    L:TBitString;

    R:TBitString;

    end;

  TIPKey = Array[0..16]OF TIPKeyParts;

 

Const

DES_PC1:Array[0..55] Of Byte = (57,49,41,33,25,17,9,

                                1,58,50,42,34,26,18,

                                10,2,59,51,43,35,27,

                                19,11,3,60,52,44,36,

                                63,55,47,39,31,23,15,

                                7,62,54,46,38,30,22,

                                14,6,61,53,45,37,29,

                                21,13,5,28,20,12,4);

 

DES_PC2:Array[0..47] Of Byte = (14,17,11,24,1,5,

                                3,28,15,6,21,10,

                                23,19,12,4,26,8,

                                16,7,27,20,13,2,

                                41,52,31,37,47,55,

                                30,40,51,45,33,48,

                                44,49,39,56,34,53,

                                46,42,50,36,29,32);

 

DES_IP:Array[0..63] Of Byte = (58,50,42,34,26,18,10,2,

                               60,52,44,36,28,20,12,4,

                               62,54,46,38,30,22,14,6,

                               64,56,48,40,32,24,16,8,

                               57,49,41,33,25,17,9,1,

                               59,51,43,35,27,19,11,3,

                               61,53,45,37,29,21,13,5,

                               63,55,47,39,31,23,15,7);

 

DES_E:Array[0..47] Of Byte = (32,1,2,3,4,5,

                              4,5,6,7,8,9,

                              8,9,10,11,12,13,

                              12,13,14,15,16,17,

                              16,17,18,19,20,21,

                              20,21,22,23,24,25,

                              24,25,26,27,28,29,

                              28,29,30,31,32,1);

 

S_BOXES:Array[0..7,0..3,0..15]Of Byte = (

((14,04,13,01,02,15,11,08,03,10,06,12,05,09,00,07),

  (00,15,07,04,14,02,13,01,10,06,12,11,09,05,03,08),

  (04,01,14,08,13,06,02,11,15,12,09,07,03,10,05,00),

  (15,12,08,02,04,09,01,07,05,11,03,14,10,00,06,13)),

 

((15,01,08,14,06,11,03,04,09,07,02,13,12,00,05,10),

(03,13,04,07,15,02,08,14,12,00,01,10,06,09,11,05),

(00,14,07,11,10,04,13,01,05,08,12,06,09,03,02,15),

(13,08,10,01,03,15,04,02,11,06,07,12,00,05,14,09)),

 

((10,00,09,14,06,03,15,05,01,13,12,07,11,04,02,08),

(13,07,00,09,03,04,06,10,02,08,05,14,12,11,15,01),

(13,06,04,09,08,15,03,00,11,01,02,12,05,10,14,07),

(01,10,13,00,06,09,08,07,04,15,14,03,11,05,02,12)),

DES алгоритмі арқылы шифрлеу