Убедительная просьба помочь. Схематично реализую алгоритм шифрования RSA. Каждый символ введённой строчки преобразуется в ASCII-код, после чего этот код шифруется и дешифруется. Ссылка на педивикию:
RSA — Википедия.
С математикой вроде бы всё в порядке, но из за нехватки диапазона чисел, выдаёт неправильные цифры и символы. Как быть?
Код:
#include "StdAfx.h"
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <math.h>
void main()
{
const short p=11,q=23;
char af[20];
int i,e,d;
char ch;
int shifr,a,deshifr;
unsigned long long f,n,b,c;
n=q*p;
printf("n=%d\n",n);
f=(p-1)*(q-1);
printf("f=%d\n",f);
d=17;
printf("d=%d\n",d);
e=13;
printf("e=%d\n",e);
printf("Vvedite message!\n");
gets(af);
for(i=0;i<strlen(af);i++)
{
a=af[i];
printf(" %c ",af[i]);
printf(" -> ");
printf("%5d",a);
printf(" -> ");
b=1;
for(int o=1;o<=e;o++)
{
b=b*a;
}
shifr=b%n;
printf("%5d",shifr);
printf(" -> ");
//send "shifr" to 2nd
c=1;
for(int o=1;o<=d;o++)
{
c=c*shifr;
}
deshifr=c%n;
printf("%5d",deshifr);
printf(" -> ");
ch=deshifr;
printf(" %c \n",ch);
}
getch();
}