zoukankan      html  css  js  c++  java
  • 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;

    私钥数据结构定义

    typedef struct ECCrefPrivateKey_st
    {
    unsigned int bits;                           //密钥位长,数据长度为4字节  
    unsigned char K[ECCref_MAX_LEN]; // 私钥,32字节
    } ECCrefPrivateKey;

     

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

    用私钥k可以产生对应的公钥x y,私钥k由随机数产生

    ECC加密数据结构定义

    #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;

    起始地址:X+32

    起始地址Y+32

    加密的数据C

    SM3 hash值M

     

          长度为32                     长度为32                  长度为L                     长度为32 

    所以加密的结果为96+L

  • 相关阅读:
    Graceful degradation versus progressive enhancement
    表现与数据分离
    避免写出IE Bug
    js控制元素的显示与隐藏
    EntityManager方法简介
    JPA EntityManager详解(一)
    Springmvc中 同步/异步请求参数的传递以及数据的返回
    JPA详解
    单向关系中的JoinColumn
    Hibernate一对多和多对一关系详解 (转载)
  • 原文地址:https://www.cnblogs.com/chenxuelian/p/6114324.html
Copyright © 2011-2022 走看看