資源簡介
真正由標(biāo)準(zhǔn)C寫出來的ECC加密程序。要是誰用了有問題請發(fā)郵件到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坐標(biāo)
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???\
?
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件???????8329??2012-09-26?17:23??ECC.c
-----------?---------??----------?-----??----
?????????????????8329????????????????????1
評論
共有 條評論