Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.05.2010, 01:38   #1
Irenka
Пользователь
 
Аватар для Irenka
 
Регистрация: 17.05.2010
Сообщений: 39
Лампочка аффинная криптосистема, дешифрация

Одноалфавитная аффинная система является симметрической;

безопасность симметричного алгоритма определяется ключом, т.о. раскрытие ключа дает возможность злоумышленнику шифровать и дешифрировать все сообщения;

обобщением системы Цезаря является аффинная криптосистема, которая определяется двум числами a и b, где 0<=a,b<=n-1, числа a и n должны быть взаимно просты для биективности отображения, в противном случае возможны отображения различных символов в один и неоднозначность дешифрирования.

У кого есть еще что-то полезное? Желательно на С/С++
Irenka вне форума Ответить с цитированием
Старый 04.06.2010, 17:19   #2
Irenka
Пользователь
 
Аватар для Irenka
 
Регистрация: 17.05.2010
Сообщений: 39
По умолчанию

Пупсики, вот что-то получилось программно, может, кому-то надо будет:
#include<conio.h>
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<iostream.h>
#include<string.h>
#include<ctype.h>
void obr(char p[120],char b[27],char v[120],char *z)
{
int n,w=0;

n=strlen(p);
for (int i=0;i<n;i++)
{
if ((p[i]==' ')||(p[i]==',')||(p[i]=='.'))
for (int j=i;j<n;j++)
p[j]=p[j+1];
}
n=strlen(p);
for (i=0;i<n;i++)
for (int j=0;j<26;j++)
if (p[i]==v[j])
{
*(z+w)=b[j];w++;
}
}

void main()
{
char a[27],q[130],c[130],d[130];
FILE *pf,*pg,*pt,*pp;
int l=0,i=0,m=0,nn=0,x,y,k[27],t=0;

int h[]={1,3,5,7,9,11,15,17,19,21,23,25};

clrscr();
for (i=0;i<130;i++)
d[i]=0;
pt=fopen("oo.txt","r");
pf=fopen("k.txt","r");
while (!feof(pf))
fgets(a,130,pf);
fclose(pf);
l=strlen(a);

m1:
cout<<"\n=======================\n" ;
cout<<"\nvvedite chislo A"<<
endl<<"( 1,3,5,7,9,11,15,17,19,21,23,25 ) \n\n";
cin>>x;
for (i=0;i<12;i++)
if (x==h[i])
nn=1;
if (nn==0)
{
cout<<"\nchislo vvedeno neverno!";
goto m1;
}

m2:
cout<<"\nvvedite chislo B :"<<
endl<<"( ot 0 do 25 ) \n\n";
cin>>y;
if (y<0 || y>26)
{
cout<<"\nchislo vvedeno neverno!";
goto m2;
}

for (i=0;i<26;i++)
{
k[i]=(x*i+y);
if (k[i]>=26)
while (k[i]>=26)
k[i]=k[i]-26;
}
cout<<"\n";
for (i=0;i<l;i++)
c[i]=a[k[i]];
cout<<"\n\n";

char ch;

clrscr();
do
{
printf("\n\n");
do
{
cout<<"=========================\n" ;
cout<<"1. VVOD IZ FAILA\n";
cout<<"=========================\n" ;
cout<<"0. VIHOD\n\n";
cout<<"=========================\n" ;
cout<<"VASH VIBOR:";
cin>>ch;
}
while(!strchr("120",tolower(ch)));


switch(ch)
{

case'1':
{
clrscr();

for (i=0;i<l;i++)
cout<<" "<<a[i];
cout<<"\n";
for (i=0;i<l;i++)
cout<<" "<<c[i];
m=0;
cout<<"\n";

while (!feof(pt))
{
t=t+1;
fgets(q,60,pt);

cout<<"\n\n=======================\ n";
cout<<"\nzashifrovannaya fraza \n\n";
printf("\n%s",q);

obr(q,a,c,&d[0]);
m=strlen(d);

cout<<"\n\n=======================\ n";
cout<<"\nrashifrovannaya fraza \n\n";

for (i=0;i<m;i++)
cout<<d[i];
cout<<"\n";
if (t==1)
{
pp=fopen("rez4.txt","w");
fprintf(pp,"%s",d);
fclose(pp);
}
else
{
pp=fopen("rez4.txt","a");
fprintf(pp,"\n%s",d);
fclose(pp);
}
for (i=0;i<m;i++)
d[i]=0;
}

cout<<"\n=======================\n" ;
cout<<"\nnazmite lubyu klavishu";

getch();
clrscr();
break;
}

case'0':
{
t=1;
exit(1);
}
}
}
while (t!=1);
}
Irenka вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
криптосистема Эль-Гамаля Nanochka Помощь студентам 16 21.04.2012 10:53
Аффинная система подстановок Цезаря Karyuudo Помощь студентам 12 10.02.2010 19:26
md5 дешифрация Izhic Безопасность, Шифрование 10 03.08.2009 13:56
криптосистема rsa на delphi Paul11j Помощь студентам 1 05.06.2009 20:41