+ xy = x 3 + ax 2 + b . Таким чином, стандарт рекомендує тільки несуперсінгулярние криві.
. На кривій вибирається точка (xG, yG), xG, yG? GF (q) простого порядку n> 2 160 , n> 4 i> і обчислюється кофактор h = | E (GF (q)) |/n . В якості кривих можна і зручно вибирати у разі p = 2 криві, у яких a, b рівні 0, 1, але стандарт рекомендує все ж випадкові криві, тобто криві з випадково вибраними a, b .
При цьому рекомендується використовувати такі алгоритми генерації випадкових кривих:
1) Випадок q = p . Покладемо
t = log 2 p , s = (t? 1)/160 , v = t? 160s .
1. Вибираємо довільну рядок бітів seedE довжиною g? 160 біт, і вважаємо z рівним числу, двійкова запис якого збігається з seedE .
. Застосовуючи до seedE стандартну хеш-функцію SHА 1 , обчислюємо g-бітову рядок H = SHA 1 (seedE) . Вибираючи в H v самих правих бітів, отримуємо рядок c 0 довжиною v span> бітів.
. Замінюючи в c 0 самий лівий біт на 0, отримуємо рядок W 0 .
. Для i від 1 до s робимо наступне:
.1 вважаємо s i