Вибираємо довільну рядок бітів seedE довжиною g? 160 біт, і вважаємо z , що дорівнює кількості, двійкова запис якого збігається з seedE .
. Обчислюємо g -бітову рядок H = SHA i> 1 (seedE). Вибираючи в H v самих правих бітів, отримуємо рядок b 0 довжиною v бітів.
. Замінюючи в b 0 самий лівий біт на 0, отримуємо рядок W 0 .
. Для i від 1 до s робимо наступне:
.1 вважаємо s i рівній g ? бітної рядку, що є двійковій записом числа z + i mod 2 g
4.2 обчислюємо g-бітову рядок bi = SHA1 (si).
. Обчислюємо бітову рядок b = b0. . . bs і вважаємо b рівним відповідному елементу поля GF (q).
. Якщо b = 0, то повертаємося до кроку 1. p align="justify">. Вибираємо довільний a ? GF (q).
. Отримана крива є E: y2 + xy = x3 + ax2 + b.
Генерація криптографически надійних параметрів кривих.
Стандартом рекомендується певний алгоритм генерації надійних параметрів кривих.
. Вибираємо випадкову криву E (GF (q)) алгоритмом, зазначеним вище.
2. Обчислюємо її порядок N = | E (GF (q)) |. p align="justify">. Перевіряємо, чи ділиться N на раніше вибране просте n (n> 2160, n> 4 ). Якщо ні, то переходимо до кроку 1.
. Перевіряємо, що n не ділиться ні одне з чисел qk? 1, k = 1,. . . 20. Якщо ні, то переходимо до кроку 1. p align="justify">. Перевіряємо, що n? q. Якщо ні, то переходимо до кроку 1. p align="justify">. Вибираємо ...