FE2OSP và OS2FEP chuyển đổi giữa trường hữu hạn phần tử (chẳng hạn như tọa độ X hoặc Y của một điểm trên Đường cong Elliptic) và chuỗi bộ tám (tương đương chuỗi byte). Ban đầu chúng được định nghĩa bởi Tiêu chuẩn IEEE 1363-2000 và sửa đổi bởi IEEE P1363a-2004.
trường hữu hạn được thiết lập với $q$ yếu tố lưu ý $\operatorname{GF}(q)$ hoặc $\mathbb F_q$, ở đâu $q$ là số nguyên lớn có dạng $q=p^m$, với $p$ số nguyên tố và $m$ một số nguyên ít nhất $1$.
FE2OSP (Nguyên thủy chuyển đổi phần tử trường thành chuỗi octet) lấy đầu vào là phần tử trường $x$ và kích thước trường $q$. Nó xuất ra một chuỗi octet, có kích thước phụ thuộc vào $q$ chỉ có.
OS2FEP (Nguyên thủy chuyển đổi chuỗi octet thành phần tử trường) lấy đầu vào là một chuỗi octet (và kích thước của nó) và kích thước trường $q$. Nó xuất ra một phần tử trường hoặc một dấu hiệu lỗi.
Tiêu chuẩn phân biệt 3 trường hợp:
- $m=1$, đối với cái gọi là đường cong nguyên tố như secp256k1 hoặc secp384r1 (cho đến nay là phổ biến nhất hiện nay). phần tử trường $x$ là một số nguyên trong $[0,p)$. Xâu bộ tám tương ứng có $\left\lceil\log_2(p-1)/8\right\rceil$ octet (byte), đại diện cho $x$ mỗi người lớn quy ước. Điều này phù hợp với các chuyển đổi được thực hiện bởi PKCS#1's I2OSP và OS2IP trong RSA.
- $p=2$, đối với cái gọi là đường cong nhị phân như phái239k1 hoặc giáo phái283r1. phần tử trường $x$ là một chuỗi bit của $m$ bit lưu ý $b_i$. Xâu bộ tám tương ứng có $\left\lceil m/8\right\rceil$ octet (byte), với $b_0$ bit ít quan trọng nhất của octet cuối cùng và $7-(m\bmod 8)$ các bit quan trọng nhất của byte đầu tiên ở mức 0.
- Khác (chỉ thuộc P1363a). phần tử trường $x$ Là $m$ số nguyên $a_i\in[0,p)$. Xâu bộ tám tương ứng có $\left\lceil\log_2(q-1)/8\right\rceil$ octet (byte), đại diện cho số nguyên $\sum_{i=0}^{m-1}a_i\,p^i$ mỗi người lớn quy ước. Điều đó làm cho 1 và 2 trở thành trường hợp đặc biệt của 3 tổng quát hơn.
Trong mọi trường hợp, trung tính nhân của trường ( $1$ ) được đại diện bởi $\left\lceil\log_2(q-1)/8\right\rceil$ octet (byte), với octet cuối cùng 01h và tất cả những người khác 00h.
Theo đánh giá của tôi về bản nháp P1363-D13 (1999) và P1363a-D12 (2003), sự khác biệt với bản thảo hiện đại GIÂY1-v2'S Chuyển đổi từ trường thành phần tử sang chuỗi octet và Chuyển đổi Octet-String-to-Field-Element là tối thiểu:
- chỉ có vỏ P1363a 3.
- P1363 tên byte $M_i$ với $M_0$ cuối cùng/phải. SEC1 đảo ngược ký hiệu đó (và tương ứng thay đổi các công thức), điều này tự nhiên hơn đối với các lập trình viên coi chỉ số 0 là đầu tiên/trái. Điều đó làm không phải thay đổi chuỗi octet.
- "Lỗi" của OS2FEP là "không hợp lệ" của Chuyển đổi Octet-String-to-Field-Element.