<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    附 錄 B (規范性附錄) 轉換函數

    B.1 八位位組串/比特串轉換:OS2BSP 和 BS2OSP

    八位位組串和比特串之間的轉換函數 OS2BSP 和 BS2OSP 定義如下:

    —— ——函數OS2BSP(x),輸入是八位位組串x,輸出是比特串x;

    —— ——函數BS2OSP(y),輸入是比特串y,其長度是8的倍數,輸出是一個八位位組串x,所以有y= OS2BSP(x)。

    B.2 比特串/整數轉換:BS2IP 和 I2BSP

    比特串和整數之間的轉換函數BS2IP 和 I2BSP定義如下:

    —— ——函數BS2IP(x) 把比特串x映射成一個整數x′。映射方法如下:如果x = ?xl-1,……,x0?其中x0, . . . , xl-1是比特,那么x′定義為x′ = Σ0 ≤ i < l, xi = ‘1’ 2^i^;

    —— ——函數I2BSP(m, *l *) ,輸入是兩個非負整數m和l,輸出是一個長度為l的比特串x,所以如果存在x,則有BS2IP(x) = m。否則函數失敗。

    非負整數n的比特長度是使用二進制表達的比特個數,例如?log2(n + 1)?。為了表達簡練,Oct(m)定義Oct(m) = I2BSP(m, 8) 。

    注:當且僅當m的比特長度大于l時I2BSP(m, l)失敗。

    B.3 八位位組串/整數轉換:OS2IP 和 I2OSP

    八位位組串和整數之間的轉換函數OS2IP 和 I2OSP定義如下:

    —— ——函數OS2IP(x),輸入是八位位組串x,輸出是整數BS2IP(OS2BSP(x));

    —— ——函數I2OSP(m, l) ,輸入是兩個非負整數m和l,輸出是一個長度為l的八位位組串x,所以如果存在x,則有OS2IP(x) = m。否則函數失敗。

    非負整數n的比特長度是使用基于256表達的數字個數,例如?log256(n + 1)?;長度值使用L(n)表示。

    注1:當且僅當m的比特長度大于l時I2OSP(m, l )失敗。

    注2:八位位組x通常使用長度為2的十六進制格式,表示為OS2IP(x);當OS2IP(x) < 16時,代表比特串0000 的“0”作為前綴。

    B.4 有限域元素/整數轉換:FE2IPF

    將有限域F的元素轉換為整數值的函數FE2IPF定義如下:

    —— ——函數FE2IPF把元素 a∈ F 映射成整數值a′。映射方法如下:如果F的基q= p^e^,其中p為素數,e ≥ 1,那么F的元素a是e元組(a1, . . . , ae),其中對于1 ≤ i≤ e,ai∈ [0 . . p),a′定義為a′= Σ1<=i<=e ai Pi-1

    B.5 八位位組串/有限域元素轉換:OS2FEPF 和 FE2OSPF

    八位位組串和顯式給定有限域F的元素之間的轉換函數OS2FEPF和 FE2OSPF定義如下:

    00008——函數FE2OSPF(a),輸入是有限域F的元素,輸出是八位位組串I2OSP(a′, l),其中a′ = FE2IPF(a),l是|F|?1的八位位組個數,例如l = ?log256|F|?。如上述FE2OSPF(a) 的輸出總是長度為?log256|F|?的八位位組串;

    00009——函數OS2FEPF(x) ,輸入八位位組串x,輸出是(唯一的)域元素a ∈ F。所以如果存在a,則有FE2OSPF1(a) = x。否則函數失敗。

    注:當且僅當x的長度不等于?log256 |F|?,或者OS2IP(x) ≥ |F|,OS2FEPF(x)失敗;長度值表示為L=F

    B.6 橢圓曲線/八位位組串轉換:EC2OSPE和 OS2ECPE

    B.6.1 壓縮橢圓曲線點

    顯式給定有限域F(基為p)上的橢圓曲線E

    一個點*P *≠ O(不為無窮遠點)可以使用壓縮,非壓縮或者混合形式表示。

    如果P *= (x, *y) ,那么(x, y)就是P的非壓縮形式。

    如上描述的橢圓曲線上的點P *= (x, *y) 。點P的壓縮形式是(x, ?),其中? ∈ {0, 1}按照如下決定:

    00010——如果p *≠ 2和y = 0F,那么?*= 0;

    00011——如果p *≠ 2和y ≠ 0F,那么?= ((y′/p^ f^) mod *p) mod 2,其中y′ = FE2IPF(y),f是最大的非負整數如*p^f ^| *y′;

    00012——如果p *= 2和x = 0F,那么?*= 0;

    00013——如果p *= 2和x ≠ 0F,那么?* = ?z′/2^f^? mod 2,其中z *= *y/xz′ = FE2IPF(z) ,f是最大的非負整數如2^f^/ FE2IP~F ~(1F) 。

    P *= (x, *y)的混合形式是(x, ?, y) ,其中?如上描述。

    B.6.2 點解壓縮算法

    點的解壓縮方法很多,例如從(x, ?)計算y。主要方法描述如下:

    00014——假設p *≠ 2,(x, *y) 的壓縮形式是(x, ?) 。點(x, y)滿足方程y^2 ^= f *(x),f (x)是參數為x的多項式。如果f (x) = 0F,那么對于y只有一種可能的選擇,即y = 0F。否則如果f (x) ≠ 0,那么對于y有兩種可能的選擇(區別僅僅是符號不同),由?決定正確的選擇。有一些比較有名的在有限域里計算平方根的算法,所以y*的兩個選擇很容易計算;

    00015——假設p *= 2,(x, *y) 的壓縮形式是(x, ?) 。點(x, y)滿足方程y^2 ^+ xy *= *x^3^+ ax^2 ^+ b。如果x *= 0F,那么得出y^2 ^= *by能夠唯一確定并計算。否則如果x *≠ 0F,那么設置z = *y/x,則有z^2 ^+ z *= *g(x) ,其中g(x) = (x *+ *a *+ *bx^?^^2^) 。y通過值zx能夠唯一確定并計算。計算z:對于固定的x值,如果z是方程z^2 ^+ z *= *g(x)的一個解,則另一個解是z *+ 1F。很容易地計算z的兩個候選值,由?決定z*的正確選擇。

    B.6.3 逆運算

    顯式給定有限域F上的橢圓曲線E

    橢圓曲線E上的點和八位位組串之間的轉換函數 EC2OSPE和 OS2ECPE定義如下:

    a) 函數EC2OSPE(P, fmt) ,輸入是橢圓曲線E上的點P和格式符fmt(壓縮,非壓縮或混合)。輸出是八位位組串EP,計算如下:

    1) 如果*P *= O,那么EP = Oct(0);

    2) 如果P *= (x, *y) ≠ O,壓縮格式(x, ?) ,那么EP = H *|| *X *|| *Y,其中:

    i) H是格式為Oct(4U *+ *C *·(2 + *?))的八位位組,其中:

    I) 如果fmt是非壓縮或混合格式,那么U *= 1,否則U *= 0;

    II) 如果fmt是壓縮或混合格式,那么C *= 1,否則C *= 0。

    ii) X是八位位組串FE2OSPF(x) ;

    iii) 如果fmt是非壓縮或混合格式,那么Y是八位位組串FE2OSPF(y) ,否則Y是空八位位組串;

    b) 函數OS2ECPE(EP) ,輸入是八位位組串EP。如果在橢圓曲線E上存在點P及格式符fmt如EC2OSPE(P, fmt) = EP,那么函數輸出P(非壓縮),否則函數失敗。注意點P如果存在,則是唯一定義的,所以函數OS2ECPE(EP) 也是確定的。

    注:如果格式符fmt是非壓縮的,那么?值不需要計算。

    本文章首發在 網安wangan.com 網站上。

    上一篇 下一篇
    討論數量: 0
    只看當前版本


    暫無話題~
    亚洲 欧美 自拍 唯美 另类