Логарифмирование в полях простого порядка
В этом подразделе мы считаем, что , т. e. будем рассматривать дискретное логарифмирование в группе , где  -- простое число. Для удобства мы будем работать с полем вычетов по модулю  и с его мультипликативной группой . 
В работе Коямы [Koy] приведены результаты о логарифмировании в , которые означают следующее: 
    1. Сложность решения уравнения , где , не зависит от и . 
    2. Решить систему уравнений 

не легче, чем одно уравнение ( ). 
Положим . Следующий алгоритм приводится в виде схемы, не претендующей на подробное описание: 
    1. Разложить на простые множители (с помощью одного из алгоритмов факторизации целых чисел): , где  -- конечное множество простых чисел, а . 
    2. Выбрать границу гладкости (где  -- некоторая константа) и найти множество всех простых чисел, не превосходящих (множество называется факторной базой). 
    3. Случайно перебирая целые числа , , выбрать те, для которых либо , либо является гладким по отношению к границе гладкости , т. е. 
	   где 	(2)	

или 
	
	   где 	(3)	

    4. Пусть на предыдущем этапе найдены гладких чисел , , и гладких чисел , . Построить векторы показателей 
	   для 	   	

и 
	
	   для 	   	

Отметим, что если через обозначить вектор , то, логарифмируя соотношения (2) и (3), можно получить, что 
	   для 	(4)	

и 
	
	   для 	(5)	

где обозначает скалярное произведение по модулю : 

    5. Для каждого выразить один из векторов через векторы . Для того, чтобы это было возможно, должно быть достаточно велико. 
    6. Пусть на предыдущем этапе найдено соотношение , где . Тогда из  (4) и (5) следует, что 

и, следовательно, мы можем найти . 
    7. Вычислив для всех , с помощью китайской теоремы об остатках найти . 
Приведенный алгоритм описан в работе Адлемана, но основные идеи этого алгоритма были изложены в работе Вестерна и Миллера в 1968 г.Получена эвристическая оценка его сложности при условии использования одного из субэкспоненциальных алгоритмов для факторизации . В этой работе рассмотрен и случай, когда не является порождающим , т. е. логарифмирование производится в подгруппе группы . Также замечено, что этот общий случай можно свести к случаю, когда является порождающим . 
Заметим, что, вообще говоря, факторизация не является необходимой. Достаточно найти один гладкий элемент и пытаться выразить его через произведение степеней гладких элементов , т. е. проводить исключение в показателях сразу по модулю . 
На этапе 5 алгоритма приходится решать разреженные системы линейных уравнений в кольцах вычетов . В ряде работ указано, что метод гауссова исключения здесь не является оптимальным. Предлагается использовать, например, алгоритмы Ланцоша или Видемана. В работе  описан новый метод исключения, предложенный Померансом. 
Дальнейшее развитие указанного метода логарифмирования в получено Копперсмитом, Одлыжко и Шреппелем в работе. Сложность вычисления дискретного логарифма доведена до . Согласно, алгоритм  был реализован на ЭВМ; результат позволяет предположить, что вычисление логарифма в на ЭВМ можно проводить за реальное время при порядка .