кодом RSА з модулем m Довжина 768 біт. За їх прогнозами, система з 1024-значний основою может буті розкрити в найбліжчі 3-4 роки. br/>
3.2.4 програмнного реалізація
Код програми:
# include
# include
# include
# include namespace std; long Stepen (int a, int d, int M) ...// функція піднесення а d (mоd m),
{реалізує алгоритм 3.2.1.long r; razr = 0; = d; (r)
{= r/2; + +;
} * d_dv = new int [razr]; = d; (int i = 0; i
{2-вій сістемі_dv [i] = r% 2;// тут и далі В«%В» - оператор, что повертає остачу від ділення, Тільки для типом В«ІntВ» = r/2;// для типом В«Іnt В»- цілочіслене
ділення
} = 1; (int i = razr-1; i> = 0; i-)
{(d_dv [i]) r = r * r * a; r * = r; = r% M;
} d_dv; r;
} Evkl (int x, int y)// функція реалізує алгоритм
Евкліда 3.2.2.
{r, a, b; = x; b = y;
{(a> b)
{= a% b; = r;
}
{= b% a; = r;
}
} (r); (a> b) b = a; b;
} main ()
{long int x, f_x, M, fi_M; d, e, p, q; = 11; q = 13;// генерація параметрів шифрування = p * q; fi_M = (p-1) * (q- 1); за завданням пробачимо числах р і q = 2; (Evkl (e, fi_M)! = 1) e + +; <<В«Vvedit povidomlennya, ne bilscheВ« <> x; _x = Stepen (x, e, M);// виклик Функції піднесення до степеня е
за модулем m <
умову 3.1.8 ((e * d)% fi_M! = 1) cout <
{<
} <
}
Код програми написано мовою Dеv-С + +.
Приклад 3.2.1. Візьмемо, для наочності, р = 11, q = 13. Повідомленням буде натуральне число з проміжку [0; m-1]. Тоді результат програми віглядатіме Наступний чином: povidomlennya, ne bilsche 143:// Введіть ПОВІДОМЛЕННЯ, що не
больше ...
kluch sustemu: (e, m) = (7, 143)// Відкритий ключ системи: povidomlennya: 80// шифрування Повідомлення: shifrovane povidomlennya: 80// отримання шифрування Повідомлення: klucha ...// Перевірка ключа ... virniy. // Ключ вірний.: 115// Повідомлення: vuhody natusnit Enter ...// Для виходе натісніть Enter ...
Приклад 3.2.2. За тихий самих умів Спробуємо тепер збільшити вихідні Прості числа, для чого скорістаємось генератором простих чисе...