ECC數據結構

在SM2 ECC算法中,有針對簽名加密的數據結構,下面對這些結構進行分析算法

#define ECCref_MAX_BITS 512
#define ECCref_MAX_LEN ((ECCref_MAX_BITS+7) / 8)數據結構

 #define ECC_OFFSET 32加密

公鑰數據結構定義
typedef struct ECCrefPublicKey_st
{
unsigned int bits;                            //密鑰位長,數據長度爲4字節  
unsigned char x[ECCref_MAX_LEN];  //公鑰X座標, 32字節
unsigned char y[ECCref_MAX_LEN];  //公鑰Y座標, 32字節
} ECCrefPublicKey;spa

 

私鑰數據結構定義blog

typedef struct ECCrefPrivateKey_st
{
unsigned int bits;                           //密鑰位長,數據長度爲4字節  
unsigned char K[ECCref_MAX_LEN]; // 私鑰,32字節
} ECCrefPrivateKey;ip

 

memcpy(pucPublicKey->x+ECC_OFFSET, sm2key.x,32);
memcpy(pucPublicKey->y+ECC_OFFSET, sm2key.y,32);
memcpy(pucPrivateKey->K+ECC_OFFSET ,sm2key.d ,32);ci

用私鑰k能夠產生對應的公鑰x y,私鑰k由隨機數產生hash

 

ECC加密數據結構定義it

#define ECCCipher_MAX_C_LEN 4096
typedef struct ECCCipher_st
{
unsigned char x[ECCref_MAX_LEN];
unsigned char y[ECCref_MAX_LEN];
unsigned char M[32];
unsigned int L;
unsigned char C[ECCCipher_MAX_C_LEN];
} ECCCipher;table

起始地址:X+32

起始地址Y+32

加密的數據C

SM3 hash值M

 

      長度爲32                     長度爲32                  長度爲L                     長度爲32 

因此加密的結果爲96+L

相關文章
相關標籤/搜索