FE2OSP и OS2FEP конвертируют между конечное поле элемент (например, координата X или Y точки на эллиптической кривой) и строка октетов (эквивалентно строка байтов). Первоначально они были определены Стандарт IEEE 1363-2000 и пересмотрено IEEE P1363a-2004.
Конечное поле наборы с $q$ отмеченные элементы $\operatorname{GF}(q)$ или же $\mathbb F_q$, куда $q$ является большим целым числом формы $q=p^m$, с $р$ премьер, и $м$ целое число не менее $1$.
FE2OSP (примитив преобразования элемента поля в строку октетов) принимает в качестве входных данных элемент поля $х$ и размер поля $q$. Он выводит строку октетов, размер которой зависит от $q$ Только.
OS2FEP (примитив преобразования строки октетов в элементы поля) принимает в качестве входных данных строку октетов (и ее размер) и размер поля. $q$. Он выводит элемент поля или индикацию ошибки.
Стандарт различает 3 случая:
- $м=1$, для так называемых простых кривых, таких как secp256k1 или же secp384r1 (самый распространенный в наше время). Элемент поля $х$ является целым числом в $[0,р)$. Соответствующая строка октетов имеет $\влево\lceil\log_2(p-1)/8\вправо\rceil$ октеты (байты), представляющие $х$ за обратный порядок байтов соглашение. Это соответствует преобразованиям, выполненным PKCS#1. I2OSP и OS2IP в РСА.
- $р=2$, для так называемых бинарных кривых, таких как sect239k1 или же sect283r1. Элемент поля $х$ это битовая строка $м$ отмеченные биты $b_i$. Соответствующая строка октетов имеет $\влево\lceil м/8\вправо\rceil$ октеты (байты), с $b_0$ младший бит последнего октета и $7-(m\bmod 8)$ старшие биты первого байта равны нулю.
- Другие (охватываемые только P1363a). Элемент поля $х$ является $м$ целые числа $a_i\in[0,p)$. Соответствующая строка октетов имеет $\влево\lceil\log_2(q-1)/8\вправо\rceil$ октеты (байты), представляющие целое число $\sum_{i=0}^{m-1}a_i\,p^i$ за обратный порядок байтов соглашение. Это делает 1 и 2 частными случаями более общего 3.
Во всех случаях мультипликативная нейтраль поля ( $1$ ) представлен $\влево\lceil\log_2(q-1)/8\вправо\rceil$ октеты (байты), с последним октетом 01час и все остальные 00час.
Согласно моему обзору проектов P1363-D13 (1999 г.) и P1363a-D12 (2003 г.), отличия от современных SEC1-v2х Преобразование элемента поля в строку октетов и Преобразование строки октета в элемент поля минимальны:
- только P1363a охватывает случай 3.
- P1363 называет байты $M_i$ с $M_0$ последний/правый. SEC1 переворачивает это обозначение (и соответственно изменяет формулы), что более естественно для программистов, которые видят нулевой индекс первым/левым. Это делает нет изменить строку октетов.
- «Ошибка» OS2FEP - это «недопустимое» преобразование Octet-String-to-Field-Element.