Математико-алгоритмические методы криптозащиты
Проведение эксперимента по применению различных видов шифрования данных. Сравнение алгоритмов криптозащиты DES и RSA. Выявление их особенностей, устойчивости к взлому, достоинств и недостатков. Анализ сфер применения. Обзор исходных текстов программ.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | практическая работа |
Язык | русский |
Дата добавления | 21.08.2017 |
Размер файла | 869,7 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
00000060: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
00000070: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
00000080: 00 00 00 00 41 0F A6 77 ¦ F7 E4 F6 F4 34 85 09 AB
00000090: C2 13 82 C8 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
000000A0: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
000000B0: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
000000C0: 00 00 00 00 FC CC 48 D6 ¦ 31 4D 6C F9 94 C4 DF 2A
000000D0: D8 F4 A6 30 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
000000E0: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
000000F0: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
00000100: 00 00 00 00 AB 1C 25 48 ¦ 25 18 8F 75 27 A3 B7 3F
00000110: 37 23 B0 6C 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
00000120: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
00000130: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
00000140: 00 00 00 00 E8 D4 44 3D ¦ EE DA 4F 7B 23 70 77 6F
00000150: 85 D4 7A 2C 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
00000160: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
00000170: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
00000180: 00 00 00 00 F1 0D 68 D8 ¦ 25 4C 4F 66 89 B8 CC 9B
00000190: CB CF 1F 60 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
000001A0: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
000001B0: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
000001C0: 00 00 00 00 E7 21 FC 0D ¦ 54 E7 8D 07 F0 6E 82 45
000001D0: B6 AA 6D F8 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
000001E0: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
000001F0: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
00000200: 00 00 00 00 6F 4A DB 92 ¦ 6A AB 9C 0A 5C EA 97 BD
00000210: EF 22 A7 08 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
00000220: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
00000230: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
00000240: 00 00 00 00 12 B8 1C 7D ¦ 15 29 C0 3D CC CA BD 0F
00000250: B7 00 7A 82 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
00000260: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
00000270: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
00000280: 00 00 00 00 6B F6 35 55 ¦ 7A FC 88 DB 4F 02 8C C6
00000290: B4 75 BE A2 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
000002A0: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
000002B0: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
000002C0: 00 00 00 00 14 66 C5 16 ¦ FD 53 C3 5C F2 26 6D 7D
000002D0: 62 E1 2E 8C 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
000002E0: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
000002F0: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
00000300: 00 00 00 00 5A 36 3E 0B ¦ 61 D7 BE B3 F6 04 F3 A4
00000310: C8 49 8A D2 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
00000320: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
00000330: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
00000340: 00 00 00 00 DD 29 80 6F ¦ B5 D7 76 24 E2 0E AF 2E
00000350: A2 C8 87 34 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
00000360: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
00000370: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
00000380: 00 00 00 00 21 31 BB D3 ¦ 69 67 AE 46 BF 81 98 BC
00000390: C0 2E 1C A8 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
000003A0: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
000003B0: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
000003C0: 00 00 00 00 AC 2C 08 75 ¦ 4A 62 9A CA 8E 9D 81 03
000003D0: 70 03 38 18 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
000003E0: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
000003F0: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
00000400: 00 00 00 00 24 D8 08 6A ¦ 7F 5B 54 A0 E3 EF 3C F4
00000410: 50 96 77 AA 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
00000420: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
00000430: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
00000440: 00 00 00 00 37 92 0D 58 ¦ ED 70 C6 FF 49 83 36 C5 00000450: 7A AA 1F 2C 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
00000460: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
00000470: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
00000480: 00 00 00 00 CB FC 6A 24 ¦ 20 1D 58 B0 B3 1C AD 16
00000490: DF E2 43 72 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
000004A0: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
000004B0: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
000004C0: 00 00 00 00 3E 87 6E 26 ¦ 4A 77 9A 48 45 F4 01 C3
000004D0: 04 CD 6B CC 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
000004E0: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
000004F0: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
00000500: 00 00 00 00 45 4D 81 5E ¦ AD B9 01 92 F8 FD B9 1E
00000510: C0 8B 03 B8 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
00000520: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
00000530: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
00000540: 00 00 00 00 B8 A8 B1 68 ¦ A6 75 00 1C D1 89 26 01
00000550: 87 F9 27 12 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
00000560: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
00000570: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
00000580: 00 00 00 00 44 40 9E 5B ¦ F7 2D C8 1E AC 6F A5 52
00000590: A2 4B 3F EC 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
000005A0: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
000005B0: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
00000450: 7A AA 1F 2C 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
00000460: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
00000470: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
00000480: 00 00 00 00 CB FC 6A 24 ¦ 20 1D 58 B0 B3 1C AD 16
00000490: DF E2 43 72 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
000004A0: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
000004B0: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
000004C0: 00 00 00 00 3E 87 6E 26 ¦ 4A 77 9A 48 45 F4 01 C3
000004D0: 04 CD 6B CC 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
000004E0: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
000004F0: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
00000500: 00 00 00 00 45 4D 81 5E ¦ AD B9 01 92 F8 FD B9 1E
00000510: C0 8B 03 B8 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
00000520: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
00000530: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
00000540: 00 00 00 00 B8 A8 B1 68 ¦ A6 75 00 1C D1 89 26 01
00000550: 87 F9 27 12 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
00000560: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
00000570: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
00000580: 00 00 00 00 44 40 9E 5B ¦ F7 2D C8 1E AC 6F A5 52
00000590: A2 4B 3F EC 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
000005A0: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
000005B0: 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 00 00 00 00
Приложение 2 Исходные тексты программ
Пр 2.1. Исходные тексты программы шифрования DES.
Файл AlgDes.cpp
#include <io.h>
#include <dir.h>
#include <mem.h>
#include <conio.h>
#include <fcntl.h>
#include <stdio.h>
#include "des.h"
//extern void cdecl des_cryption( char far *source, char far *dest, char far *K );
//extern void cdecl encryption_key( char far *key, char far *K );
//extern void cdecl decryption_key( char far *key, char far *K );
#define BUF_SIZE 4096 /* Размер буфера ввода-вывода */
/* должен быть кратен 8 */
char buf[BUF_SIZE] = "DES_crypt", /* Буфер ввода-вывода */
K[16*8], /* Таблица ключей */
drive[MAXDRIVE],
dir[MAXDIR],
path[MAXPATH];
int main( int argc, char *argv[] )
{
int file_argc=0, /* Позиция файла в argv */
dest, /* Дескриптор получателя */
source, /* Дескриптор источника */
size, /* Количество прочитанных байтов */
i;
enum
{
Encryption,
Decryption
} decr_encr = Encryption; /* Шифрование-дешифрование */
printf("Algoritm DES\n");
_fmode = O_BINARY; /* Двоичный режим */
if( argc > 1 ) /* Разбор командной строки */
for( i = 1; i < argc; i++ )
if( argv[i][0] != '/' )
file_argc = i;
else
switch( argv[i][1] ) /* Разбор опций */
{
case 'D' :
case 'd' :
decr_encr = Decryption; /* Дешифровать */
break;
case 'E':
case 'e':
decr_encr = Encryption; /* Шифровать */
}
if( file_argc == 0 ) /* Не указано имя файла в КС */
{
printf("Использование:\n");
printf(" DES [<options>] <source_file> [<options>]\n");
printf("Options:\n");
printf(" /e Encrypt <source_file>. (DEFAULT)\n");
printf(" /d Decrypt <source_file>.\n");
}
else
{
if( decr_encr == Encryption ) /* Шифрование */
{ /* Разбор имени файла */
long file_length;
encryption_key( getpass( "Enter password:" ), K );
fnsplit( argv[ file_argc ], drive, dir, buf+10, buf+19 );
fnmerge( path, drive, dir, buf+10, ".des" );
if( ( source = open( argv[file_argc], O_RDONLY|O_BINARY ) ) == -1 )
{
perror( "Fatal Error" );
return (1);
}
if( ( file_length = filelength( source ) ) == -1 )
{
perror( "Fatal Error" );
close( source );
return (1);
}
/* Размер шифруемого текста должен быть кратен 8 */
buf[9] = (unsigned char)( 8 - (unsigned char)file_length & 7 ) & 7;
if( ( size = read( source, buf + buf[9] + 24,
BUF_SIZE - buf[9] - 24 ) ) == -1 )
{
perror( "Fatal Error" );
close( source );
return (1);
}
/* Шифруем заглавную часть файла */
for( i = 24; (i - 24) < (size + buf[9]); i += 8 )
des_cryption( buf + i, buf + i, K );
if( ( dest = creatnew( path, 0 ) ) == -1 )
{
perror( "Fatal Error" );
close( source );
return (1);
}
/* Запись заглавной части */
if( write( dest, buf, i ) == -1 )
{
perror( "Fatal Error" );
close( source );
close( dest );
return (1);
}
}
else /* Дешифрование */
{
decryption_key( getpass( "Enter password:" ), K );
if( ( source = open( argv[file_argc], O_RDONLY|O_BINARY ) ) == -1 )
{
perror( "Fatal Error" );
return (1);
}
if( ( size = read( source, buf, BUF_SIZE ) ) == -1 )
{
perror( "Fatal Error" );
close( source );
return (1);
}
/* Проверка формата файла */
if( (size < 24) || ( (size&7) != 0 ) )
{
printf( "Error in file structure !\n" );
return (1);
}
if( memcmp( buf, "DES_crypt", 9 ) != 0 ) /* Наш файл ? */
{
printf( "Error in file structure !\n" );
return (1);
}
/* Восстанавливаем имя исходного файла */
fnsplit( argv[ file_argc ], drive, dir, NULL, NULL );
fnmerge( path, drive, dir, buf + 10, buf + 19 );
/* Обрабатываем заголовок */
for( i = 24; i < size; i += 8 )
des_cryption( buf + i, buf + i, K );
if( ( dest = creatnew( path, 0 ) ) == -1 )
{
perror( "Fatal Error" );
close( source );
return (1);
}
if( write( dest, buf + buf[9] + 24, size - buf[9] - 24 ) == -1 )
{
perror("Fatal Error");
close(source);
close(dest);
return (1);
}
}
/* Цикл шифрования-дешифрования */
for(;;)
{
if( ( size = read( source, buf, BUF_SIZE ) ) == -1 )
{
perror( "Fatal Error" );
close( source );
close( dest );
return (1);
}
if( size == 0 ) /* Конец файла */
break;
if( (size & 7) != 0 ) /* Что-то нечисто !!! */
{
printf( "General failure error !\n" );
return (1);
}
for( i = 0; i < size; i += 8 ) /* Шифрование-дешифрование буфера */
des_cryption( buf + i, buf + i, K );
if( write( dest, buf, i ) == -1 )
{
perror( "Fatal Error" );
close( source );
close( dest );
return (1);
}
}
close( source );
close( dest );
printf( "Ok\n" ); /* Примите наши поздравления! */
}
return (0);
}
Файл Des.h
extern "C" void des_cryption( char far *source, char far *dest, char far *K );
extern "C" void encryption_key( char far *key, char far *K );
extern "C" void decryption_key( char far *key, char far *K );
Файл Des.ASM
TITLE Data Encryption Standard
.MODEL COMPACT, C
.DATA
S1 DB 0E0H, 000H, 040H, 0F0H, 0D0H, 070H, 010H, 040H
DB 020H, 0E0H, 0F0H, 020H, 0B0H, 0D0H, 080H, 010H
DB 030H, 0A0H, 0A0H, 060H, 060H, 0C0H, 0C0H, 0B0H
DB 050H, 090H, 090H, 050H, 000H, 030H, 070H, 080H
DB 040H, 0F0H, 010H, 0C0H, 0E0H, 080H, 080H, 020H
DB 0D0H, 040H, 060H, 090H, 020H, 010H, 0B0H, 070H
DB 0F0H, 050H, 0C0H, 0B0H, 090H, 030H, 070H, 0E0H
DB 030H, 0A0H, 0A0H, 000H, 050H, 060H, 000H, 0D0H
S2 DB 0FH, 03H, 01H, 0DH, 08H, 04H, 0EH, 07H
DB 06H, 0FH, 0BH, 02H, 03H, 08H, 04H, 0EH
DB 09H, 0CH, 07H, 00H, 02H, 01H, 0DH, 0AH
DB 0CH, 06H, 00H, 09H, 05H, 0BH, 0AH, 05H
DB 00H, 0DH, 0EH, 08H, 07H, 0AH, 0BH, 01H
DB 0AH, 03H, 04H, 0FH, 0DH, 04H, 01H, 02H
DB 05H, 0BH, 08H, 06H, 0CH, 07H, 06H, 0CH
DB 09H, 00H, 03H, 05H, 02H, 0EH, 0FH, 09H
S3 DB 0A0H, 0D0H, 000H, 070H, 090H, 000H, 0E0H, 090H
DB 060H, 030H, 030H, 040H, 0F0H, 060H, 050H, 0A0H
DB 010H, 020H, 0D0H, 080H, 0C0H, 050H, 070H, 0E0H
DB 0B0H, 0C0H, 040H, 0B0H, 020H, 0F0H, 080H, 010H
DB 0D0H, 010H, 060H, 0A0H, 040H, 0D0H, 090H, 000H
DB 080H, 060H, 0F0H, 090H, 030H, 080H, 000H, 070H
DB 0B0H, 040H, 010H, 0F0H, 020H, 0E0H, 0C0H, 030H
DB 050H, 0B0H, 0A0H, 050H, 0E0H, 020H, 070H, 0C0H
S4 DB 07H, 0DH, 0DH, 08H, 0EH, 0BH, 03H, 05H
DB 00H, 06H, 06H, 0FH, 09H, 00H, 0AH, 03H
DB 01H, 04H, 02H, 07H, 08H, 02H, 05H, 0CH
DB 0BH, 01H, 0CH, 0AH, 04H, 0EH, 0FH, 09H
DB 0AH, 03H, 06H, 0FH, 09H, 00H, 00H, 06H
DB 0CH, 0AH, 0BH, 01H, 07H, 0DH, 0DH, 08H
DB 0FH, 09H, 01H, 04H, 03H, 05H, 0EH, 0BH
DB 05H, 0CH, 02H, 07H, 08H, 02H, 04H, 0EH
S5 DB 020H, 0E0H, 0C0H, 0B0H, 040H, 020H, 010H, 0C0H
DB 070H, 040H, 0A0H, 070H, 0B0H, 0D0H, 060H, 010H
DB 080H, 050H, 050H, 000H, 030H, 0F0H, 0F0H, 0A0H
DB 0D0H, 030H, 000H, 090H, 0E0H, 080H, 090H, 060H
DB 040H, 0B0H, 020H, 080H, 010H, 0C0H, 0B0H, 070H
DB 0A0H, 010H, 0D0H, 0E0H, 070H, 020H, 080H, 0D0H
DB 0F0H, 060H, 090H, 0F0H, 0C0H, 000H, 050H, 090H
DB 060H, 0A0H, 030H, 040H, 000H, 050H, 0E0H, 030H
S6 DB 0CH, 0AH, 01H, 0FH, 0AH, 04H, 0FH, 02H
DB 09H, 07H, 02H, 0CH, 06H, 09H, 08H, 05H
DB 00H, 06H, 0DH, 01H, 03H, 0DH, 04H, 0EH
DB 0EH, 00H, 07H, 0BH, 05H, 03H, 0BH, 08H
DB 09H, 04H, 0EH, 03H, 0FH, 02H, 05H, 0CH
DB 02H, 09H, 08H, 05H, 0CH, 0FH, 03H, 0AH
DB 07H, 0BH, 00H, 0EH, 04H, 01H, 0AH, 07H
DB 01H, 06H, 0DH, 00H, 0BH, 08H, 06H, 0DH
S7 DB 040H, 0D0H, 0B0H, 000H, 020H, 0B0H, 0E0H, 070H
DB 0F0H, 040H, 000H, 090H, 080H, 010H, 0D0H, 0A0H
DB 030H, 0E0H, 0C0H, 030H, 090H, 050H, 070H, 0C0H
DB 050H, 020H, 0A0H, 0F0H, 060H, 080H, 010H, 060H
DB 010H, 060H, 040H, 0B0H, 0B0H, 0D0H, 0D0H, 080H
DB 0C0H, 010H, 030H, 040H, 070H, 0A0H, 0E0H, 070H
DB 0A0H, 090H, 0F0H, 050H, 060H, 000H, 080H, 0F0H
DB 000H, 0E0H, 050H, 020H, 090H, 030H, 020H, 0C0H
S8 DB 0DH, 01H, 02H, 0FH, 08H, 0DH, 04H, 08H
DB 06H, 0AH, 0FH, 03H, 0BH, 07H, 01H, 04H
DB 0AH, 0CH, 09H, 05H, 03H, 06H, 0EH, 0BH
DB 05H, 00H, 00H, 0EH, 0CH, 09H, 07H, 02H
DB 07H, 02H, 0BH, 01H, 04H, 0EH, 01H, 07H
DB 09H, 04H, 0CH, 0AH, 0EH, 08H, 02H, 0DH
DB 00H, 0FH, 06H, 0CH, 0AH, 09H, 0DH, 00H
DB 0FH, 03H, 03H, 05H, 05H, 06H, 08H, 0BH
.CODE
PUBLIC des_cryption, encryption_key, decryption_key
;****************************************************************************;
;** ШИФРОВАНИЕ/ДЕШИФРОВАНИЕ **;
;****************************************************************************;
;
;****************************************************************************;
;** **;
;** Заголовок : IP MACRO **;
;** Назначение: начальная перестановка IP шифруемого блока **;
;** На входе : DS:SI указывают на исходную 8-байтовую последовательность **;
;** На выходе : AX:BX - блок L0, **;
;** : CX:DX - блок R0 **;
;** Регистры : AX,BX,CX,DX,SI,DI изменяют свое значение **;
;** Такты : 482(86) 367(286) 879(386) 453(486) **;
;** **;
;****************************************************************************;
;
IP MACRO
LOCAL IP_L10
MOV AH, 80H ; Хитрый счетчик на 8 проходов
CLD
IP_L10: LODSB ; Загрузка очередного байта
SHL AL, 1 ; Формирование байтов выходного блока
RCR CH, 1 ; 5-й байт
SHL AL, 1
RCR BH, 1 ; 1-й байт
SHL AL, 1
RCR CL, 1 ; 6-й байт
SHL AL, 1
RCR BL, 1 ; 2-й байт
SHL AL, 1
RCR DH, 1 ; 7-й байт
SHL AL, 1
RCR DI, 1 ; 3-й байт
SHL AL, 1
RCR DL, 1 ; 8-й байт
SHL AL, 1
RCR AH, 1 ; 4-й байт
JNC IP_L10
MOV SI, BX ; Размещение преобразованного
MOV BX, DI ; блока в выходных регистрах
MOV BL, AH
MOV AX, SI
ENDM
;****************************************************************************;
;** **;
;** Заголовок : E MACRO **;
;** Назначение : преобразование E **;
;** На входе : CX:DX - блок R **;
;** На выходе : AH:CH:AL:CL:старший байт DI:DH: **;
;** : младший байт DI:DL<->B1:B2:B3:B4:B5:B6:B7:B8 **;
;** Регистры : AX,CX,DX,DI изменяют свое значение **;
;** Такты : 44(86) 41(286) 62(386) 37(486) **;
;** **;
;****************************************************************************;
;
E MACRO
MOV AX, CX ; AX:DI = CX:DX = Ri
MOV DI, DX
SHL DX, 1 ; Циклический сдвиг Ri влево
RCL CX, 1
ADC DX, 0
AND DX, 3F3FH ; Формирование 6-разрядных
AND CX, 3F3FH ; блоков
SHR AX, 1 ; Циклический сдвиг Ri вправо
RCR DI, 1
RCL AX, 1
ROR AX, 1
SHR AX, 1 ; Формирование 6-разрядных
SHR AX, 1 ; блоков
AND AX, 3F3FH
SHR DI, 1
SHR DI, 1
AND DI, 3F3FH
ENDM
;****************************************************************************;
;** **;
;** Заголовок : XOR_WITH_KEY MACRO **;
;** Назначение : исключающее ИЛИ результата преобразования E с ключом **;
;** На входе : AX:CX:DI:DX - результат преобразования E, ES:SI -> Ki **;
;** На выходе : AH:CH:AL:CL:старший байт DI:DH: **;
;** : младший байт DI:DL<->B1:B2:B3:B4:B5:B6:B7:B8 **;
;** : после сложения с ключом, то есть вход матриц Si **;
;** Регистры : AX,CX,DX,DI изменяют свое значение **;
;** Такты : 76(86) 28(286) 24(386) 8(486) **;
;** **;
;****************************************************************************;
; алгоритм криптозащита шифрование исходный
XOR_WITH_KEY MACRO
XOR AX, ES:[SI]
XOR CX, ES:[SI+2]
XOR DI, ES:[SI+4]
XOR DX, ES:[SI+6]
ENDM
;****************************************************************************;
;** **;
;** Заголовок : S MACRO **;
;** Назначение : преобразование с помощью таблиц Si **;
;** На входе : AX:CX:DI:DX-результат сложения преобразования E с ключом **;
;** На выходе : AX:BX - результат преобразования с помощью таблиц Si **;
;** Регистры : AX,BX,CX изменяют свое значение **;
;** Такты : 153(86) 68(286) 64(386) 22(486) **;
;** **;
;****************************************************************************;
;
S MACRO
SUB BX, BX
MOV BL, AH
MOV AH, [BX+S1]
MOV BL, CH
OR AH, [BX+S2] ; AH = S1:S2
MOV BL, AL
MOV AL, [BX+S3]
MOV BL, CL
OR AL, [BX+S4] ; AL = S3:S4
MOV CX, DI
MOV BL, CH
MOV CH, [BX+S5]
MOV BL, DH
OR CH, [BX+S6] ; CH = S5:S6
MOV BL, CL
MOV CL, [BX+S7]
MOV BL, DL
OR CL, [BX+S8] ; CL = S7:S8
MOV BX, CX ; BX = S5:S6:S7:S8
ENDM
;****************************************************************************;
;** **;
;** Заголовок : P MACRO **;
;** Назначение : перестановка P **;
;** На входе : AX:BX - результат преобразования с помощью таблиц Si **;
;** На выходе : CX:DX - результат перестановки P **;
;** Регистры : AX,BX,CX,DX изменяют свое значение **;
;** Такты : 148(86) 148(286) 414(386) 222(486) **;
;** **;
;****************************************************************************;
;
P MACRO ; Обрабатываемые биты:
ROL AH, 1
RCL CL, 1 ; Байт 2, бит 1
ROL AH, 1
RCL DH, 1 ; Байт 3, бит 1
ROR AH, 1
ROR AH, 1
ROR AH, 1
RCL DH, 1 ; Байт 3, бит 2
ROR BH, 1
RCL DH, 1 ; Байт 3, бит 3
ROR AL, 1
RCL CH, 1 ; Байт 1, бит 1
ROR AL, 1
RCL CL, 1 ; Байт 2, бит 2
ROR AL, 1
RCL DH, 1 ; Байт 3, бит 4
ROR AH, 1
RCL CH, 1 ; Байт 1, бит 2
ROR BH, 1
RCL CL, 1 ; Байт 2, бит 3
ROL BH, 1
ROL BH, 1
ROL BH, 1
ROL BH, 1
ROL BH, 1
RCL DL, 1 ; Байт 4, бит 1
ROL BH, 1
RCL CH, 1 ; Байт 1, бит 3
ROL BH, 1
RCL CH, 1 ; Байт 1, бит 4
ROR AL, 1
RCL DL, 1 ; Байт 4, бит 2
ROR BL, 1
RCL DH, 1 ; Байт 3, бит 5
ROR BL, 1
ROR BL, 1
RCL DL, 1 ; Байт 4, бит 3
ROR BL, 1
RCL CH, 1 ; Байт 1, бит 5
ROR AL, 1
RCL CH, 1 ; Байт 1, бит 6
ROR BL, 1
RCL CH, 1 ; Байт 1, бит 7
ROR BL, 1
RCL DH, 1 ; Байт 3, бит 6
ROR BL, 1
RCL CL, 1 ; Байт 2, бит 4
ROR AH, 1
RCL DL, 1 ; Байт 4, бит 4
ROR AH, 1
RCL CL, 1 ; Байт 2, бит 5
ROL BH, 1
RCL DL, 1 ; Байт 4, бит 5
ROR AL, 1
RCL DL, 1 ; Байт 4, бит 6
ROR AH, 1
RCL DL, 1 ; Байт 4, бит 7
ROR AH, 1
RCL DH, 1 ; Байт 3, бит 7
ROR BL, 1
RCL DL, 1 ; Байт 4, бит 8
ROL BH, 1
ROL BH, 1
ROL BH, 1
RCL CH, 1 ; Байт 1, бит 8
ROL BH, 1
RCL CL, 1 ; Байт 2, бит 6
ROR BL, 1
ROR BL, 1
RCL CL, 1 ; Байт 2, бит 7
ROR AL, 1
RCL CL, 1 ; Байт 2, бит 8
ROR AL, 1
RCL DH, 1 ; Байт 3, бит 8
ENDM
;****************************************************************************;
;** **;
;** Заголовок : XOR_L_F MACRO **;
;** Назначение : исключающее ИЛИ результата функции F с L(i-1) **;
;** На входе : AX:BX - L(i-1), CX:DX - F(R(i-1),Ki) **;
;** На выходе : CX:DX - Ri **;
;** Регистры : CX,DX изменяют свое значение **;
;** Такты : 6(86) 4(286) 4(386) 2(486) **;
;** **;
;****************************************************************************;
;
XOR_L_F MACRO
XOR CX, AX
XOR DX, BX
ENDM
;****************************************************************************;
;** **;
;** Заголовок : DIS_IP MACRO **;
;** Назначение : обратная перестановка IP шифруемого блока **;
;** На входе : CX:DX:AX:BX - переставляемые данные ( R16:L16 ), **;
;** : ES:DI-адрес области сохранения зашифрованного сообщения **;
;** На выходе : Зашифрованное сообщение помещено в память **;
;** Регистры : AX,BX,CX,DX,SI,DI,BP изменяют свое значение **;
;** Такты : 482(86) 366(286) 886(386) 456(486) **;
;** **;
;****************************************************************************;
DIS_IP MACRO
LOCAL DIS_IP_L10
MOV SI, AX
MOV BP, 8 ; Счетчик цикла
DIS_IP_L10: SHR DL, 1 ; Формирование байтов выходного блока
RCR AL, 1 ; 4-й байт
SHR BL, 1
RCR AL, 1 ; 8-й байт
SHR DH, 1
RCR AL, 1 ; 3-й байт
SHR BH, 1
RCR AL, 1 ; 7-й байт
SHR CL, 1
RCR AL, 1 ; 2-й байт
SHR SI, 1
RCR AL, 1 ; 6-й байт
SHR CH, 1
RCR AL, 1 ; 1-й байт
SHR AH, 1
RCR AL, 1 ; 5-й байт
STOSB ; Запись зашифрованного блока
DEC BP
JNZ DIS_IP_L10
ENDM
;****************************************************************************;
;** **;
;** Заголовок : des_cryption PROC **;
;** Назначение : процедура шифрования данных по алгоритму DES **;
;** : параметры получает согласно С стандарту вызова функций **;
;** На входе : source - указатель на восьмибайтовый шифруемый блок **;
;** : dest - указатель на область сохранения закрытых данных **;
;** : K указывает расположение ключей Ki **;
;** На выходе : зашифрованное сообщение помещено в память **;
;** Регистры : AX,BX,CX,DX,ES изменяют свое значение **;
;** Такты : 10088(86) 6203(286) 11549(386) 5803(486) **;
;** **;
;****************************************************************************;
;
des_cryption PROC source:FAR PTR BYTE,dest:FAR PTR BYTE,K:FAR PTR BYTE
PUSH SI ; Организуем связь с С
PUSH DI
PUSH DS
LDS SI, source ; Адрес исходного блока
IP ; Начальная перестановка IP
POP DS
LES SI, K ; Адрес таблицы ключей Ki
PUSH BP
MOV BP, 16 ; 16-проходный DES
des_cryption_L10: PUSH CX
PUSH DX ; Запоминаем R(i-1)
PUSH AX
PUSH BX ; Запоминаем L(i-1)
E
XOR_WITH_KEY
S
P ; CX:DX = F(R(i-1), Ki)
POP BX
POP AX ; AX:BX = L(i-1)
XOR_L_F ; CX:DX = Ri = L(i-1) (+) F
POP BX
POP AX ; AX:BX = Li = R(i-1)
ADD SI, 8 ; Следующий ключ
DEC BP
JZ des_cryption_L20
JMP des_cryption_L10
des_cryption_L20: POP BP
LES DI, dest ; Адрес зашифрованного блока
DIS_IP ; Конечная перестановка
POP DI
POP SI
RET
des_cryption ENDP
;****************************************************************************;
;** СОЗДАНИЕ КЛЮЧЕЙ **;
;****************************************************************************;
;
;****************************************************************************;
;** **;
;** Заголовок : PC1 MACRO **;
;** Назначение : начальная перестановка ключей PC1 **;
;** На входе : DS:SI указывают на исходный восьмибайтовый ключ **;
;** На выходе : BX:AX - блок D0, CX:DX - блок C0 **;
;** Регистры : AX,BX,CX,DX,SI изменяют свое значение **;
;** Такты : 452(86) 337(286) 789(386) 414(486) **;
;** **;
;****************************************************************************;
;
PC1 MACRO
LOCAL PC1_L10
MOV BH, 80H ; Хитрый счетчик
CLD
PC1_L10: LODSB ; Читаем ключ
SHL AL, 1
RCR CH, 1 ; 1-й байт C0
SHL AL, 1
RCR CL, 1 ; 2-й байт C0
SHL AL, 1
RCR DH, 1 ; 3-й байт C0
SHL AL, 1
RCR DL, 1 ; 4-й полубайт C0 и D0
SHL AL, 1
RCR AH, 1 ; 3-й байт D0
SHL AL, 1
RCR BL, 1 ; 2-й байт D0
SHL AL, 1
RCR BH, 1 ; 1-й байт D0
JNC PC1_L10
MOV AL, DL ; Формирование 4-го байта D0
SHL AL, 1
SHL AL, 1
SHL AL, 1
SHL AL, 1
ENDM
;****************************************************************************;
;** **;
;** Заголовок : ROL_KEY MACRO **;
;** Назначение : циклический сдвиг ключей **;
;** На входе : CX:DX - блок C(i-1), BX:AX - блок D(i-1), **;
;** : SI побитно кодирует количество сдвигов **;
;** На выходе : CX:DX - блок Ci, BX:AX - блок Di **;
;** Регистры : AX,BX,CX,DX,SI изменяют свое значение **;
;** Такты : 42/54(86) 30/45(286) 43/70(386) 22/36(486) **;
;** : (зависит от количества сдвигов) **;
;** **;
;****************************************************************************;
;
ROL_KEY MACRO
LOCAL ROL_KEY_L10
AND DL, 0F0H ; 28-разрядный циклический
SHL DX, 1 ; левый сдвиг C0
RCL CX, 1
ADC DL, 0FH
AND AL, 0F0H ; 28-разрядный циклический
SHL AX, 1 ; левый сдвиг D0
RCL BX, 1
ADC AL, 0FH
SHR SI, 1 ; Признак количества сдвигов
JC ROL_KEY_L10
AND DL, 0F0H ; 28-разрядный циклический
SHL DX, 1 ; левый сдвиг C0
RCL CX, 1
ADC DL, 0FH
AND AL, 0F0H ; 28-разрядный циклический
SHL AX, 1 ; левый сдвиг D0
RCL BX, 1
ADC AL, 0FH
ROL_KEY_L10: ENDM
;****************************************************************************;
;** **;
;** Заголовок : PC2_FOR_C MACRO **;
;** Назначение : перестановка PC2 для блока Ci **;
;** На входе : CX:DX - блок Ci **;
;** На выходе : BX:AX - перестановка блока Ci **;
;** Регистры : AX,BX,CX,DX изменяют свое значение **;
;** Такты : 140(86) 138(286) 349(386) 203(486) **;
;** **;
;****************************************************************************;
;
PC2_FOR_C MACRO ; Обрабатываемые биты:
SUB AX, AX
MOV BX, AX
ROR CL, 1
RCL AL, 1 ; Байт 4, бит 3
ROR CH, 1
ROR CH, 1
RCL AL, 1 ; Байт 4, бит 4
ROR CH, 1
ROR CH, 1
ROR CH, 1
ROR CH, 1
RCL AH, 1 ; Байт 2, бит 3
ROR DH, 1
ROR DH, 1
RCL BL, 1 ; Байт 3, бит 3
ROL DL, 1
ROL DL, 1
ROL DL, 1
RCL AL, 1 ; Байт 4, бит 5
ROL DL, 1
RCL AH, 1 ; Байт 2, бит 4
ROR CL, 1
RCL AH, 1 ; Байт 2, бит 5
ROR CL, 1
RCL BH, 1 ; Байт 1, бит 3
ROR DH, 1
ROR DH, 1
ROR DH, 1
RCL AL, 1 ; Байт 4, бит 6
ROR DH, 1
RCL BL, 1 ; Байт 3, бит 4
ROR DH, 1
ROR DH, 1
RCL BH, 1 ; Байт 1, бит 4
ROR CL, 1
RCL AL, 1 ; Байт 4, бит 7
ROR CL, 1
RCL BL, 1 ; Байт 3, бит 5
ROR CL, 1
RCL BH, 1 ; Байт 1, бит 5
ROR DH, 1
RCL BH, 1 ; Байт 1, бит 6
ROR CH, 1
RCL AL, 1 ; Байт 4, бит 8
ROR CH, 1
RCL BH, 1 ; Байт 1, бит 7
ROR CH, 1
ROR CH, 1
ROR CH, 1
RCL AH, 1 ; Байт 2, бит 6
ROR CH, 1
RCL BH, 1 ; Байт 1, бит 8
ROR CH, 1
RCL BL, 1 ; Байт 3, бит 6
ROR DL, 1
ROR DL, 1
ROR DL, 1
RCL BL, 1 ; Байт 3, бит 7
ROR DH, 1
ROR DH, 1
ROR DH, 1
RCL AH, 1 ; Байт 2, бит 7
ROR CL, 1
RCL AH, 1 ; Байт 2, бит 8
ROR CH, 1
ROR CH, 1
ROR CH, 1
ROR CH, 1
RCL BL, 1 ; Байт 3, бит 8
ENDM
;****************************************************************************;
;** **;
;** Заголовок : PC2_FOR_D MACRO **;
;** Назначение : перестановка PC2 для блока Di **;
;** На входе : CX:DX - блок Di **;
;** На выходе : BX:AX - перестановка блока Di **;
;** Регистры : AX,BX,CX,DX изменяют свое значение **;
;** Такты : 133(86) 132(286) 340(386) 194(486) **;
;** **;
;****************************************************************************;
;
PC2_FOR_D MACRO ; Обрабатываемые биты:
SUB AX, AX
MOV BX, AX
ROR CL, 1
RCL BL, 1 ; Байт 3, бит 3
ROL CH, 1
ROL CH, 1
RCL AH, 1 ; Байт 2, бит 3
ROL DH, 1
ROL DH, 1
RCL AL, 1 ; Байт 4, бит 3
ROR CL, 1
ROR CL, 1
RCL AL, 1 ; Байт 4, бит 4
ROR CL, 1
RCL AL, 1 ; Байт 1, бит 3
ROR CL, 1
RCL AH, 1 ; Байт 2, бит 4
ROL DH, 1
ROL DH, 1
ROL DH, 1
RCL AL, 1 ; Байт 3, бит 4
ROL DH, 1
RCL AL, 1 ; Байт 4, бит 5
ROL DH, 1
RCL AH, 1 ; Байт 2, бит 5
ROL DH, 1
RCL AL, 1 ; Байт 1, бит 4
ROL DH, 1
RCL AH, 1 ; Байт 2, бит 6
ROR CL, 1
RCL AL, 1 ; Байт 3, бит 5
ROL CH, 1
RCL AL, 1 ; Байт 1, бит 5
ROR CL, 1
ROR CL, 1
RCL AL, 1 ; Байт 1, бит 6
ROL DH, 1
ROL DH, 1
RCL AL, 1 ; Байт 1, бит 7
ROL DL, 1
ROL DL, 1
ROL DL, 1
RCL AL, 1 ; Байт 1, бит 8
ROL DL, 1
RCL AL, 1 ; Байт 3, бит 6
ROL CH, 1
ROL CH, 1
RCL AH, 1 ; Байт 2, бит 7
ROL CH, 1
RCL AL, 1 ; Байт 3, бит 7
ROL CH, 1
ROL CH, 1
RCL AL, 1 ; Байт 4, бит 6
ROL CH, 1
RCL AL, 1 ; Байт 4, бит 7
ROL CH, 1
ROL CH, 1
ROL CH, 1
RCL AL, 1 ; Байт 4, бит 8
ROL DH, 1
RCL AH, 1 ; Байт 2, бит 8
ROR DL, 1
ROR DL, 1
ROR DL, 1
ROR DL, 1
RCL AL, 1 ; Байт 3, бит 8
ENDM
;****************************************************************************;
;** **;
;** Заголовок : encryption_key PROC **;
;** Назначение : процедура формирования ключей для шифрования **;
;** : параметры получает согласно С стандарту вызова функций **;
;** На входе : key - указатель на восьмибайтовый ключ шифрования **;
;** : K указывает расположение ключей Ki **;
;** На выходе : Сформированные ключи Ki помещены в память **;
;** Регистры : AX,BX,CX,DX,ES изменяют свое значение **;
;** Такты : 8107(86) 6299(286) 13689(386) 7727(486) **;
;** **;
;****************************************************************************;
;
encryption_key PROC key:FAR PTR BYTE,K:FAR PTR BYTE
PUSH SI ; Организуем связь с С
PUSH DI
PUSH DS
LDS SI, key ; Адрес восьмибайтового ключа
PC1
LDS DI, K ; Адрес области сохранения ключей Ki
MOV SI, 8103H ; Кодируем количество сдвигов
encryption_key_L10: ROL_KEY
PUSH CX ; Сохраняем Ci
PUSH DX
MOV ES, BX ; Сохраняем Di
MOV BP, AX
PC2_FOR_C
MOV [DI], BX ; Записываем первую часть Ki
MOV [DI+2], AX
MOV CX, ES ; CX:DX = Di
MOV DX, BP
PC2_FOR_D
MOV [DI+4], BX ; Записываем вторую часть Ki
MOV [DI+6], AX
MOV BX, ES ; AX:BX = Di
MOV AX, BP
POP DX ; CX:DX = Ci
POP CX
ADD DI, 8 ; Следующий ключ Ki
OR SI, SI
JZ encryption_key_L20
JMP encryption_key_L10
encryption_key_L20: POP DS
POP DI
POP SI
RET
encryption_key ENDP
;****************************************************************************;
;** **;
;** Заголовок : decryption_key PROC **;
;** Назначение : процедура формирования ключей для дешифрования **;
;** : параметры получает согласно С стандарту вызова функций **;
;** На входе : key - указатель на восьмибайтовый ключ шифрования, **;
;** : K указывает расположение ключей Ki **;
;** На выходе : сформированные ключи Ki помещены в память **;
;** Регистры : AX,BX,CX,DX,ES изменяют свое значение **;
;** Такты : 8111(86) 6302(286) 13691(386) 7728(486) **;
;** **;
;****************************************************************************;
;
decryption_key PROC key:FAR PTR BYTE,K:FAR PTR BYTE
PUSH SI ; Организуем связь с С
PUSH DI
PUSH DS
LDS SI, key ; Адрес восьмибайтового ключа
PC1
LDS DI, K ; Адрес области сохранения ключей Ki
ADD DI, 15*8 ; Формируем ключи в порядке
; K16,K15,...,K1
MOV SI, 8103H ; Кодируем количество сдвигов
decryption_key_L10: ROL_KEY
PUSH CX ; Сохраняем Ci
PUSH DX
MOV ES, BX ; Сохраняем Di
Подобные документы
Сущность и история разработки алгоритма криптозащиты Эль-Гамаля. Основы этого типа шифрования, особенности генерации ключей. Специфика реализации системы криптозащиты средствами процессора ADSP-2181 в расширенных полях Галуа. Блок-схемы программирования.
контрольная работа [1,0 M], добавлен 13.01.2013История криптографии. Сравнение алгоритмов шифрования, применение в операционной системе. Анализ продуктов в области пользовательского шифрования. Включение и отключение шифрования на эллиптических кривых. Использование хеш-функции. Электронная подпись.
курсовая работа [492,6 K], добавлен 18.09.2016Автоматизация процесса шифрования на базе современных информационных технологий. Криптографические средства защиты. Управление криптографическими ключами. Сравнение симметричных и асимметричных алгоритмов шифрования. Программы шифрования информации.
курсовая работа [795,7 K], добавлен 02.12.2014Сравнение производительности программных реализаций алгоритмов шифрования с оптимизациями под языки С и Java. История разработки, сущность, принципы шифрования и успехи в криптоанализе таких алгоритмов шифрования как AES, RC4, RC5, RC6, Twofish и Mars.
реферат [1,3 M], добавлен 13.11.2009Особенности шифрования данных, предназначение шифрования. Понятие криптографии как науки, основные задачи. Анализ метода гаммирования, подстановки и метода перестановки. Симметрические методы шифрования с закрытым ключом: достоинства и недостатки.
курсовая работа [564,3 K], добавлен 09.05.2012Общие сведения об алгоритмах. Свойство и этапы построения алгоритма. Нисходящее проектирование программ. Основные алгоритмические структуры. Принципы структурной алгоритмизации. Массивы случайных чисел. Ввод исходных данных. Определение и вывод данных.
методичка [435,3 K], добавлен 09.12.2014Описание основных уязвимостей технологии передачи информации Wi-Fi: атаки, угрозы криптозащиты, анонимность. Принципы и методы обеспечения безопасности беспроводных сетей. Технологии целостности и конфиденциальности передаваемых через сеть данных.
контрольная работа [539,3 K], добавлен 25.12.2014История алгоритмов симметричного шифрования (шифрования с закрытым ключом). Стандарты на криптографические алгоритмы. Датчики случайных чисел, создание ключей. Сфера интересов криптоанализа. Системы электронной подписи. Обратное преобразование информации.
краткое изложение [26,3 K], добавлен 12.06.2013Программа на языке Turbo Pascal для шифрования данных с помощью шифра Тритемиуса. Входные, выходные данные. Схема алгоритма и текст программы. Порядок ввода исходных данных и описание получаемых результатов. Тестовых задания и анализ их функционирования.
курсовая работа [4,0 M], добавлен 06.01.2011Шифрование как метод защиты информации. История развития криптологии. Классификация алгоритмов шифрования, симметричные и асимметричные алгоритмы. Использование инструментов криптографии в Delphi-приложениях. Краткая характеристика среды Delphi 7.
курсовая работа [48,5 K], добавлен 19.12.2009