-Q=(X,-Y);P-Q=P+(-Q);-Y=P-Y;
计算C1-dC2完毕后调用chdraw取出mp_int中的明文比特串,依次存入解密文件中,完成解密。 while(!feof(fp)) {
//取C1点X坐标 i=0; while(1) {
stemp[i]=fgetc(fp); if(i%4==0) {
if(int(stemp[i]&0xFF) == 255 ) goto L1; } i++; }
L1: miwendraw(&c1x, stemp, i); ………… //取其他坐标
Ecc_points_mul(&tempx, &tempy, &c2x, &c2y, k, a, p); // 计算dC2
mp_neg(&tempy, &temp);// -Q=(X,-Y)
Two_points_add(&c1x,&c1y,&tempx,&temp,&mx,&my,a,zero,p); int chtem;
chtem=chdraw(&mx,stemp);//从ming中取出字符串 //保存解密结果
for(int kk=0;kk < chtem;kk++) {
fprintf(fq,\ }
chtem=chdraw(&my,stemp);//从ming中取出字符串
//保存解密结果
for(kk=0;kk < chtem;kk++) {
fprintf(fq,\ } }
函数原型为:void Ecc_decipher(mp_int *k, mp_int *a,mp_int *p);
九、测试结果及分析
为验证系统的加密解密功能, 对系统进行了如下测试: 测试环境
Intel p4 CPU 1.5G 256M RAM windows2000 advanted server 测试结果
利用系统对文本文件、BMP、WORD、EXCEL、EXE等文件进行加密,然后解密。
验证结果表明,给定的明文经系统加密后再解密的结果完全一致,没有一个比特的偏差。较好 的实现了ECC的功能。