Кіріспе

Дискретті логарифмді шешу алгоритмі Топтар теориясында, математиканың бір саласы, "кішкентай қадам – үлкен қадам" әдісі – Дэниел Шенкс ұсынған, шекті абельдік топтағы элементтің дискретті логарифмін немесе ретін есептеуге арналған ортада кездесу алгоритмі. Дискретті логарифмді шешу мәселесі ашық кілттің криптографиясы саласындағы маңызды мәселелердің бірі болып табылады. Көптеген қолданылатын криптографиялық жүйелер дискретті логарифмді есептеудің өте қиын екеніне негізделген; оның қиындығы жоғары болса, деректерді берудегі қауіпсіздік де артады. Дискретті логарифмді шешудің қиындығын арттырудың бір жолы – криптожүйені үлкенірек топқа негіздеу.

Іс жүзінде

Кішкентай қадамды алып қадамды алгоритмді жылдамдатудың ең жақсы жолы – тиімді кесте іздеу схемасын пайдалану. Бұл жағдайда ең жақсысы – хэш кестесі. Хэш екінші компонент бойынша жасалады, ал негізгі циклдің 1-қадамында тексеру үшін γ хэштелді және алынған жад адресі тексеріледі. Хэш-кестелер элементтерді O(1) уақытында (тұрақты уақыт) алуға және қосуға мүмкіндік береді, сондықтан бұл жалпы кішкентай қадамды алып қадамды алгоритмді баяулатпайды. Алгоритмнің жадтық күрделілігі O(N), ал уақыт күрделілігі O(√N) болады. Бұл орындалу уақыты наивті күшпен есептеудің O(N) уақытынан жақсы. Диффи-Хеллман кілт алмасуында туындаған жеке кілтті алу үшін тыңшы кішкентай қадамды алып қадамды алгоритмін қолдана алады, егер модуль тым үлкен емес жай сан болса. Егер модуль жай сан болмаса, Полиг-Хеллман алгоритмі аз алгоритмдік күрделілікке ие және сол мәселені шеше алады.