ри виборі алгоритмів шифрування. На думку Ленстра та Манасію, їх робота компрометує і створює велику загрозу застосуванням криптографічних систем RSA. p align="justify"> Слід врахувати, що робота з удосконалення методів і техніки розкладання великих чисел тільки почалася і буде продовжена. Ті ж Ленстра та Манасію в 1991 році знайшли дільник тринадцятого числа Ферма, яке складається приблизно з 2500 десяткових розрядів. Тепер розробникам криптографічних алгоритмів з відкритим ключем на базі RSA доводиться як чуми уникати застосування розкладені чисел довжиною менше 200 десяткових розрядів. Самі останні публікації пропонують для цього застосовувати числа в 250 і навіть 300 десяткових розрядів. А так як для щіфрованія кожного блоку інформації доводиться відповідне число зводити в колосально велику ступінь за модулем N, то для сучасних комп'ютерів це завдання на межі можливого. Тому для практичної реалізації шифрування RSA радіоелектроніки почали розробляти спеціальні процесори, які дозволили б виконувати операції RSA досить швидко. Кращими з серійно випускаються кристалів є процесори фірми CYLINK, які дозволяють виконувати зведення в ступінь цілого числа з 307 десяткових знаків за частки секунди. Зазначимо, що надзвичайно слабке швидкодію криптографічних систем на основі RSA лише обмежує область їх застосування, але зовсім не перекреслює їх цінність. p align="justify">
Шифр ​​ЕльГамаля криптографія постійно вели пошуки більш ефективних систем відкритого шифрування, і в 1985 році ЕльГамаля запропонував наступну схему на основі піднесення до степеня за модулем великого простого числа. Для цього задається велике просте число Р. Повідомлення представляються цілими числами S з інтервалу (1, Р). Оригінальний протокол передачі повідомлення S виглядає у варіанті Шаміра, одного з авторів RSA, так:
. Відправник А і одержувач b знають лише Р. A генерує випадкове число Х з інтервалу (1, Р) і B теж генерує випадкове число Y з того ж інтервалу.
2. A шифрує повідомлення S1 = S ** X MOD Р і посилає B .
3. B шифрує його своїм ключем S2 = S1 ** Y MOD Р і посилає S2 до A .
4. A "знімає" свій ключ S3 = S2 ** ( -X) MOD Р і повертає S3 до B .
. Одержувач У розшифро...