• 大小: 2KB
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2021-06-05
  • 语言: 其他
  • 标签: ECC  STM32  

资源简介

真正由标准C写出来的ECC加密程序。要是谁用了有问题请发邮件到fjzhtaobao@sohu.com

资源截图

代码片段和文件信息

/**
  ******************************************************************************
  * @file    ECC.c
  * @author  Readers Team
  * @version V 1.00.00
  * @date    24-September-2012
  * @brief
  ******************************************************************************
  * @attention
  ******************************************************************************
  */

#include 
#include “ECC.h“


/*******************************************************************************
* Function Name  : ECC_encrypt
* Description    : The data encryption.
* Input          : - tempA : to receive encrypted generates A parameter
                   - tempP : to receive encrypted generates P parameter
*                  - tempK : to receive encrypted generates K parameter
*                  - output : Encrypted encrypted data output
*    - input :the encryption of the original data
*    - NumByte :the length of the encrypted data
* Output         : None
* Return         : return a state
*******************************************************************************/
bool ECC_encrypt(char* tempA char* tempP char* tempK char* output char* input uint32_t NumByte)
{
    uint8_t pbBuf[1];

mp_int GX;
mp_int GY;
mp_int K;  
mp_int A;
mp_int B;
mp_int QX;
mp_int QY;
mp_int P;
          
mp_init(&GX);
mp_init(&GY);
mp_init(&K);
mp_init(&A);
mp_init(&B);
mp_init(&QX);
mp_init(&QY);
mp_init(&P);


mp_init(&(ECCA));
    mp_init(&(ECCP));
    mp_init(&(ECCK));

    Cryp_GenRandom(pbBuf 1);
    t=pbBuf[0];

    srand( t );
    GetPrime(&PP_LONG);

mp_copy(&P&ECCP);
    mp_toradix(&PtempP10);
memcpy(tempECCPtempPBIT_LEN);

    GetPrime(&A30);

mp_copy(&A&ECCA);
    mp_toradix(&AtempA10);
memcpy(tempECCAtempABIT_LEN);

Get_B_X_Y(&GX&GY&B&A&P);

    GetPrime(&KKEY_LONG);

mp_copy(&K&ECCK);
    mp_toradix(&KtempK10);
memcpy(tempECCKtempKBIT_LEN);

//获取公钥Q坐标
Ecc_points_mul(&QX&QY&GX&GY&K&A&P);
 
Ecc_encipher(&QX &QY &GX &GY &A &P output input NumByte);//加密 

    mp_clear(&GX);
mp_clear(&GY);
mp_clear(&K);//私有密钥
mp_clear(&A);
mp_clear(&B);
mp_clear(&QX);
mp_clear(&QY);
mp_clear(&P);//Fp中的p(有限域P)
 
return TRUE;
}

/*******************************************************************************
* Function Name  : Ecc_encipher
* Description    : The data encryption.
* Input          : - QX : Public key X coordinate
                   - QY : Public key Y coordinate
*                  - GX : Curve G point X coordinate
*                  - GY : Curve G point Y coordinate
*    - A :Curve parameter A
*    - P :Finite field P
* Output         : None
* Return         : return a state
*******************************************************************************/
static bool Ecc_encipher(mp_int *qxmp_int *qy mp_int *px mp_int *pymp_int *amp_int *p char* pchStr   \
 

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       8329  2012-09-26 17:23  ECC.c

----------- ---------  ---------- -----  ----

                 8329                    1


评论

共有 条评论