Показать сообщение отдельно
Старый 13.06.2012, 23:04   #1 (permalink)
kostuzhoff
Новичок
 
Регистрация: 13.06.2012
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию C++. Упрощённая реализация RSA. Не хватает доступного диапазона чисел для корректных

Убедительная просьба помочь. Схематично реализую алгоритм шифрования 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();
}
kostuzhoff вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070