Форум С++

 

Ответить на сообщение

Вернуться к теме

Вы отвечаете на сообщение:

Автор: Sofya_111   (12.10.2011 в 21:13)
Здравствуйте!
Очень прошу помощи в реализации алгоритма шифрования.
Собственно алгоритм:
1. Выбрать простые числа p и q
2. Вычислить n = p * q
3. Вычислить f = (p - 1) * (q - 1)
4. Выбрать число e взаимно простое с f
5. Выбрать число d так, чтобы e * d = 1 (mod f)
#include <iostream>
#include <cmath>

using namespace std;

const int p = 3557;
const int q = 2579;

int main()
{
    long n = p * q;
    long f = ( q - 1 ) * ( p - 1 );
    long e = 3;
    long d = ( 1 + 2 * f ) / e;
    long m = 11;

    long a = fmodpow( m, e ), n );
    long b = fmodpow( a, d ), n );

    cout << "Source text: " << m << "; ciphertext: " << a << "; unciphertext: " << b;

    char ch;
    cin >> ch;

    return 0;
}


Шифрование: a = m^e(mod n)
Дешифровка: b = a^d (mod n)

Проблема в том, что текст шифрует правильно, а дешифрует не правильно. Помогите, плиз!!!!


Ваше имя:

Пароль:

Цитировать

Используйте тэги для выделения текста:
Код: [code][/code]
Жирный: [b][/b]
Наклонный: [i][/i]
URL: [url][/url]

Сообщение:

Прикрепить: