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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.10.2012, 22:33   #1
Lokomoss
Пользователь
 
Регистрация: 12.10.2012
Сообщений: 17
По умолчанию Rsa

Уже обсуждалась раннее,но я хочу понять,где у меня ошибка в проге
Шифр RSA. Вроде бы все прочла ,что связано с этой темой,ну и как бы написала программу,но она при компилировании выдает ошибки. Я не понимаю ,что это за ошибки,тк глюканутый компилятор-он просто подчеркивает строчку и не пишет из-за чего ошибка.
Я была бы очень благодарна ,Если бы мне разъяснили именно ошибку в моей программе. (не судите строго,на с++ только месяц)
Код C++



Код:
#include <math.h>
#include <gmp>
#include <stdio.h>
#include <stdlib.h>
//Функции шифрования методом RSA
int gcd (double a, double b)
{
  double c = 0.;
  while ( b != 0 )
  {
      double (c) = double(a)/ double(b);
        a = b;
        b = c;
  }
  if ( a < 0. ) {return (-1.)*a;}
  else { return a;}
}
//Создание закрытого ключа по открытому e
void RSA_key(double p, double q, double e, double &result)
{
    
    //e в степени -1 по модулю (p-1)(q-1)
    result=pow(e, (p-1)*(q-1));
}
 
//Зашифрование сообщения msg длиной msg_len ключом e по модулю n
void RSA_encrypt(double e, double n, double msg[],double msg_len,
                 double crypt_msg[])
{
    //для каждого блока сообщения
    for(int i=0; i<msg_len; i++)
    {
        //возводим в степень e по модулю n
        crypt_msg[i]=pow_mod(msg[i],e,n);
    }
}
 
//Расшифрование сообщения crypt_msg длиной msg_len ключом d по модулю n
void RSA_decrypt(double d, double n, char crypt_msg[], double msg_len,
                 double decr_msg[])
{
    //для каждого блока
    for(int i=0; i<msg_len; i++)
    {
        //возводим в степень d по модулю n
        decr_msg[i]=pow_mod(crypt_msg[i],d,n);
    }
}
int main(void){
    char s[]="Hello my dear son!";
    double p,q;
    printf("vvedite p and q\n");
    scanf("\np=%lf\n",&p);
    scanf("\nq=%lf\n",&q);
     n = p * q;
     m = (p - 1) * (q - 1);
   RSA_key(p,q,gcd (n,m), &result);
    RSA_encrypt(gcd (n,m),n,s[],msg_len,crypt_msg[]);
    printf("%s\n",RSA_encrypt(gcd (n,m),n,s[],msg_len,crypt_msg[]));
    return 0;
}
Lokomoss вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
RSA raden C++ Builder 3 27.02.2012 16:36
RSA fawr Помощь студентам 0 02.05.2011 13:59
rsa zaya Помощь студентам 1 28.04.2011 17:07
RSA lennon Помощь студентам 0 22.11.2009 17:31
RSA daitro Фриланс 4 11.06.2009 12:19