资源简介
包括ecc算法和使用的源代码。找了那么久一直都没有好用的。我提供个完全可以用的。里面有说明。在vs2010下编译测试过。
代码片段和文件信息
/* 1、用户A选定一条适合加密的椭圆曲线Ep(ab)(如:y2=x3+ax+b),并取椭圆曲线上一点,作为基点G。
2、用户A选择一个私有密钥k,并生成公开密钥K=kG。
3、用户A将Ep(ab)和点K,G传给用户B。
4、用户B接到信息后 ,将待传输的明文编码到Ep(ab)上一点M,并产生一个随机整数r(r 5、用户B计算点C1=M+rK;C2=rG。
6、用户B将C1、C2传给用户A。
7、用户A接到信息后,计算C1-kC2,结果就是点M。因为
C1-kC2=M+rK-k(rG)=M+rK-r(kG)=M
再对点M进行解码就可以得到明文。
密码学中,描述一条Fp上的椭圆曲线,常用到六个参量:
T=(pabGnh)。
(p 、a 、b 用来确定一条椭圆曲线,G为基点,n为点G的阶,h 是椭圆曲线上所有点的个数m与n相除的整数部分)
这几个参量取值的选择,直接影响了加密的安全性。参量值一般要求满足以下几个条件:
1、p 当然越大越安全,但越大,计算速度会变慢,200位左右可以满足一般安全要求;
2、p≠n×h;
3、pt≠1 (mod n),1≤t<20;
4、4a3+27b2≠0 (mod p);
5、n 为素数;
6、h≤4。
*/
#include
#include
#include
//#include
#include
#include “tommath.h“
#include “ecc.h“
#define BIT_LEN 800
#define KEY_LONG 128 //私钥比特长
#define P_LONG 200 //有限域P比特长
#define EN_LONG 40 //一次取明文字节数(x20)(y20)
//得到lon比特长素数
int GetPrime(mp_int *mint lon);
//得到B和G点X坐标G点Y坐标
void Get_B_X_Y(mp_int *x1mp_int *y1mp_int *b mp_int *a mp_int *p);
//点乘
bool Ecc_points_mul(mp_int *qxmp_int *qy mp_int *px mp_int *pymp_int *dmp_int *amp_int *p);
//点加
int Two_points_add(mp_int *x1mp_int *y1mp_int *x2mp_int *y2mp_int *x3mp_int *y3mp_int *abool zeromp_int *p);
//二进制存储密文
int chmistore(mp_int *aFILE *fp);
//把读取的字符存入mp_int型数
int putin(mp_int *achar *chint chlong);
//ECC加密
void Ecc_encipher(mp_int *qxmp_int *qy mp_int *px mp_int *pymp_int *amp_int *p);
//ECC解密
void Ecc_decipher(mp_int *k mp_int *amp_int *p);
//实现将mp_int数a中的比特串还原为字符串并赋给字符串ch:
int chdraw(mp_int *achar *ch);
//取密文
int miwendraw(mp_int *achar *chint chlong);
int myrng(unsigned char *dst int len void *dat)
{
int x;
for (x = 0; x < len; x++) dst[x] = rand() & 0xFF;
return len;
}
int main(){
mp_int GX;
mp_int GY;
mp_int K;//私有密钥
mp_int A;
mp_int B;
mp_int QX;
mp_int QY;
mp_int P;//Fp中的p(有限域P)
time_t t;
char temp[800]={0};
char tempA[800]={0};
char tempB[800]={0};
char tempGX[800]={0};
char tempGY[800]={0};
char tempK[800]={0};
char tempQX[800]={0};
char tempQY[800]={0};
char cc;
printf(“\n ECC“);
printf(“\n------------------------------------------------------------------------\n“);
mp_init(&GX);
mp_init(&GY);
mp_init(&K);
mp_init(&A);
mp_init(&B);
mp_init(&QX);
mp_init(&QY);
mp_init(&P);
srand( (unsigned) time( &t ) );
printf(“Parameters list blow(Decimal):\n“);
GetPrime(&PP_LONG);
printf(“P:\n“);
mp_toradix(&Ptemp10);
printf(“%s\n“temp);
GetPrime(&A30);
printf(“A:\n“);
mp_toradix(&AtempA10);
printf(“%s\n“tempA);
Get_B_X_Y(&GX&GY&B&A&P);
printf(“B:\n“);
mp_toradix(&BtempB10);
printf(“%s\n“tempB);
printf(“G coordinate X:\n“);
mp_toradix(&GXtempGX10);
printf(“%s\n“tempGX);
printf(“G coordinate Y:\n“);
mp_toradix(&GYtempGY10);
printf(“%s\n“tempGY);
//--------------------------------------
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 196483 2012-09-27 14:18 ecc实例\ecc.c
文件 84 2008-04-17 02:07 ecc实例\ecc.h
文件 872 2012-09-27 16:58 ecc实例\ecc.sln
..A..H. 9216 2012-09-27 16:59 ecc实例\ecc.suo
文件 6133 2012-09-27 12:50 ecc实例\ecc.vcxproj
文件 143 2012-09-27 12:50 ecc实例\ecc.vcxproj.user
文件 17301 2010-09-26 21:26 ecc实例\tommath.h
文件 21027 2008-04-17 02:27 ecc实例\tommath_class.h
文件 2310 2007-03-10 18:45 ecc实例\tommath_superclass.h
文件 1117 2012-09-27 17:14 ecc实例\使用说明.txt
目录 0 2012-09-27 17:14 ecc实例
----------- --------- ---------- ----- ----
254686 11
- 上一篇:遗传算法0-1背包问题论文
- 下一篇:stm32 iap功能实现
相关资源
- “度量”1Peccei-Quinn对称
- amtemu.v0.9.2-painter282349
- SAP PI配置流程完整版ecc端发布RFC服务
- Arcmap 10.0中文字体、平滑线插件ECCar
- ECCV10-Guided Image Filter-代码
- ECCV10-Guided Image Filter -ppt
- Guide to Elliptic Curve Cryptography
- DDR4 SODIMM条参考设计文件with-ECC
- 椭圆曲线加密算法verilog代码强力推荐
- openssl1.1.1RSA、ECC、SM2身份认证Demo及文
- ZigbeeCC2530组网代码和函数详细解答
- 基于ECC&AES混合加密应用系统原创
- Altera FPGA多种算法的说明和源码 CORD
- 椭圆曲线密码学导论 加DARREL HANKERSO
- Natural image stitching with the global simila
- ZigbeeCC2530 采集温度、获取信号强度、
- SHA-3算法之Keccak
- iNodecClient智能客户端64位
- ECCV_006.pdf
- ECCV_005.pdf
- 有关于三维重建的英文文献,在CVPR
- SHA3加密算法算法原理详细分析
- hexdecchar 0.6f.汉化版
- uECC.h和micro_ecc_lib_nrf52.lib
- ATECC08A加密芯片配置 Provision ,X509证书
- 用zigbeecc2530的ADC所做电压表,原创
- ECC点乘verilog硬件实现
- VS2013 + Opencv + libdmtx 识别 datamatrx ECC
- SAP ECC6.0 VMware虚拟机种子
- 真正的标准C写的ECC加密算法
评论
共有 条评论