Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Курсовые проекты » Програмна система &Забезпечення безпеки електронного документообігу&

Реферат Програмна система &Забезпечення безпеки електронного документообігу&





---------------------------------------------------------------------__fastcall TForm1 :: btnDecryptClick (TObject * Sender)

{(EditD- gt; Text.IsEmpty ()) {- gt; SimpleText= Чи не задана секретна експонента d raquo ;;;

} (EditN2- gt; Text.IsEmpty ()) {- gt; SimpleText= Не настроєно модуль n raquo ;;;

} privKey; .d=_atoi64 (EditD- gt; Text.c_str ()) ;. n=_atoi64 (EditN2- gt; Text.c_str ()); (! OpenDialogDecrypt- gt; Execute ()) return; fname=OpenDialogDecrypt- gt; FileName; (fname.SubString (fname.Length () - 3, 4) .LowerCase () == .enc )=fname.SubString (0, fname.Length () - 4); gt; FileName=fname; (! SaveDialogDecrypt- gt; Execute ()) return; * f=fopen (OpenDialogDecrypt- gt; FileName.c_str (), rb ); (! f) {// Файл не буде открился- gt; SimpleText= Помилка відкриття файлу + OpenDialogDecrypt- gt; FileName ;;

} * g=fopen (SaveDialogDecrypt- gt; FileName.c_str (), wb ); (! g) {// Файл не буде открился- gt; SimpleText= Помилка створення файлу + OpenDialogEncrypt- gt; FileName + .enc raquo ;; (f) ;;

} me;// Зашифроване сообщеніеm;// Розшифрувати сообщеніеr;// Лічильник лічених бітів gt; Max=filelength (fileno (f))/sizeof (Int32); gt; Position=0; (! Feof (f)) {= fread ( amp; me, 1, sizeof (Int32), f );

if (r lt; sizeof (Int32)) {// Останні байти, яких менше 4, пишемо без розшифрування ( amp; me, 1, r, g) ;;

}=rsaDecrypt (me, amp; privKey); ( amp; m, 1, r, g); gt; StepIt ();

} (f); (g); gt; Position=0; - gt; SimpleText= Файл + OpenDialogDecrypt- gt; FileName + розшифрований raquo ;;

}

//---------------------------------------------------------------------------

RSAutil.cpp

# pragma hdrstop

# include RSAutil.h

# include Numeric.h

//---------------------------------------------------------------------------

# pragma package (smart_init)

//Методи RSA

//Генерація ключейrsaGenerate (rsaPublicKey * pubKey, rsaPrivateKey * privKey) {p, q, e; n, f, d;=3;// Вибираємо відриту експоненту E {= RandomPrime (16);// Випадкові фактори=RandomPrime (16);//=(Int64) p * q;// Модуль=(Int64) (p - 1) * (q - 1);// Функція Ейлера

//Перевіряємо, що E взаємно просте cf (IsSimple (e, f)) break;

} (1);

//Обчислюємо секретну експоненту=Inverse (e, f); gt; e=e; gt; n=n; gt; d=d; gt; n=n;

}

//Шифрування повідомлення на відкритому ключеrsaEncrypt (Int32 m, rsaPublicKey * pubKey) {me; (m lt; pubKey- gt; n) {= ModPow (m, pubKey- gt; e, pubKey- gt; n); (me lt; pubKey- gt; n) return me; m;

} m;// Числа менше модулів не шифруємо

}

//Дешифрування повідомлення на закритому ключеrsaDecrypt (Int32 c, rsaPrivateKey * privKey) {(c lt; privKey- gt; n) ModPow (c, privKey- gt; d, privKey- gt; n); c;// Числа менше модулів не розшифровуємо

}

RSA.cpp

#include lt; vcl.h gt;

#pragma hdrstop

//---------------------------------------------------------------------------(laquo;Unit1.cppraquo;, Form1);

//--------------------------------------------------------------------------- WinMain (HINSTANCE, HINSTANCE, LPSTR, int)

{

{ gt; Initialize (); gt; Title= Шифрування методом RSA raquo ;; gt; CreateForm (__ classid (TForm1), amp; Form1); gt; Run ();

} (Exception amp; exception)

{ gt; ShowException ( amp; exception);

} (...)

{

{Exception ( );

} (Exception amp; exception)

{ gt; ShowException ( amp; exception);

}

} 0;

}. cpp

#pragma hdrstop

#include lt; math.h gt;

#include lt; limits.h gt;

#include lt; stdlib.h gt;

#include Numeric.h

//---------------------------------------------------------------------------

#pragma package (smart_init)

//Арифметичні алгоритми

//Розширений алгоритм Евкліда знаходження найбільшого спільного дільника чисел A і BEGCD (Int64 a, Int64 b, Int64 * u) {v [3]; t [3]; q; i;

//У масив u заноситься більше число [0]=(a gt; b? a: b); u [1]=1; u [2]=0; [0]=(a gt; b? b: a); v [1]=0; v [2]=1; (v [0]!=0) {= u [0]/v [0]; [0]=u [0]% v [0]; [1]=u [1]- q * v [1]; [2]=u [2] - q * v [2]; (i=0; i lt; 3; i ++) u [i]=v [i]; (i=0 ; i lt; 3; i ++) v [i]=t [i];

}

//У результаті в масиві v будуть числа: НОД (a, b), x, y - значення такі, що a * x + b * y=НОД (a, b)

}

//НОДGCD (Int64 a, Int64 b) {v [3]; (a, b, v); v [0];

}

...


Назад | сторінка 5 з 6 | Наступна сторінка





Схожі реферати:

  • Реферат на тему: Знаходження оптимального числа листів фанери и Вирізання потрібного числа з ...
  • Реферат на тему: Phonetic peculiarities of the popular science text
  • Реферат на тему: Grammar of the Text: its Basic Units and Main Features (based on the novel ...
  • Реферат на тему: Технології аналізу даних (Text Mining, Data Mining)
  • Реферат на тему: Визначення числа підприємств, обсягу продукції, середньооблікового числа пр ...