初始ECC算法
1、用戶A 密鑰生成
(1):用隨機數發生器產生隨機數k∈[1,n-1];
(2):計算橢圓曲線點PA=[k]G,為公鑰,k為用戶A私鑰;
2、 用戶B加密算法及流程
設需要發送的消息為比特串M,klen為M的比特長度。
為了對明文M進行加密,作為加密者的用戶B應實現以下運算步驟:
(1):用隨機數發生器產生隨機數r∈[1,n-1](隨機數r為用戶B的私鑰);
(2):計算橢圓曲線點C1=[r]G=(x1,y1),,將C1(用戶B的公鑰)的數據類型轉換為比特串;
(3):計算橢圓曲線點C2=[r]=(x2,y2),將C2的數據類型轉換為比特串;
(4):計算C 3= M*x2(modp)
(5):輸出密文C=(x1,y1,C3)
(一個M對應一個C;)
3、 用戶A解密算法及流程
(1):從密文C中取出C1(x1,y1)。
(2):使用私鑰k計算點C4(x2,y2)=k C1=k ( x1,y1)。
(3):在中計算。
(4):最后計算明文P = C3,解密完成。
明文嵌入ECC算法
1、密鑰生成用戶A
(1):用隨機數發生器產生隨機數k∈[1,n-1];
(2):計算橢圓曲線點=[k]G,為公鑰,k為用戶A私鑰;
2、 用戶B加密算法及流程
設需要發送的消息為比特串M,klen為M的比特長度。
為了對明文M進行加密,作為加密者的用戶B應實現以下運算步驟:
(1):用隨機數發生器產生隨機數r∈[1,n-1](隨機數r為用戶B的私鑰);
(2):計算橢圓曲線點C1=[r]G=(x1,y1),,將C1(用戶B的公鑰)的數據類型轉換為比特串;
(3):計算橢圓曲線點C2=[r]=(x2,y2),將C2的數據類型轉換為比特串;
(4):將明文M表示成一個域元素,即將明文轉換成橢圓曲線上的點
(5):計算C 3= C2
(6):輸出密文C=(x1,y1,C3)
(一個對應一個C)
3、 用戶A解密算法及流程
(1):從密文C中取出C1(x1,y1)。
(2):使用私鑰k計算點C4(x2,y2)=k C1=k ( x1,y1)
(3):從密文C中取出C3。
(4):最后計算明文P = C3- C4,解密完成。(解密時以密文點對中第二及之后的點減A對應私鑰與第一個點對的倍乘)