首页
社区
课程
招聘
[原创]椭圆曲线加密算法 ECC 点乘自己写的算法
2013-12-1 02:10 10077

[原创]椭圆曲线加密算法 ECC 点乘自己写的算法

2013-12-1 02:10
10077
目前在做期末考试 算是任务吧 要求实现 简单的ECC算法。
第一步 算模拟 直接网上找的代码。
算点乘 网上没找到现成的代码 自己写了。好不容易熬到现在 终于调试ok了
之前虽然知道 怎么算,但是 用程序实现起来 确实 想了好久 ,以下代码调试OK
欢迎大家 提出意见。
int ecc_point_mul(PEcc pEcc, int x,EccPoint *R,EccPoint P)
{
	int bits =0;
	int temp = x;
	int isone = 0;
	EccPoint output,point1,tempPoint,sumPoint;

	point1.x = P.x;
	point1.y =P.y;
	output.x=P.x;
	output.y=P.y;
	tempPoint.x = 0;
	tempPoint .y = 0;
	sumPoint.x=P.x;
	sumPoint.y=P.y;
	while(temp)
	{
		temp>>=1;
		isone = temp&1;		
		//if(!temp) break;
		bits++;
		ecc_point_add(pEcc,&output,point1,point1);
		point1.x = output.x;
		point1.y = output.y;

		if(isone)
		{
			ecc_point_add(pEcc,&sumPoint,tempPoint,output);	
			tempPoint.x = sumPoint.x;
			tempPoint.y = sumPoint.y;
		}


	}
	output.x=tempPoint.x;
	output.y = tempPoint.y;
	if(x&1) ecc_point_add(pEcc,&sumPoint,tempPoint,P);

	R->x = sumPoint.x;
	R->y = sumPoint.y;

	return 0;
}

[培训]科锐软件逆向50期预科班报名即将截止,速来!!! 50期正式班报名火爆招生中!!!

收藏
免费 0
打赏
分享
最新回复 (6)
雪    币: 9
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
baoecit 2013-12-1 02:12
2
0
下一步 是 关于求阶的 还不知道怎么做 ,大家有什么好的意见吗?
雪    币: 43
活跃值: (35)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hbcld 2013-12-1 11:43
3
0
同问!!!!!!!
雪    币: 62
活跃值: (27)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
publickey 2013-12-1 17:00
4
0
是求阶还是“关于求阶”?实现简单的ECC算法还需要求阶?

代码写的太粗糙,这样的代码,真正的大数ECC估计跑不跑的起来都是问题。
雪    币: 9
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
baoecit 2013-12-1 21:38
5
0
这里不考虑大数的问题。是求椭圆曲线的阶 不是点的阶。
调试完就 发出来了 没有优化
雪    币: 492
活跃值: (41)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
hacklang 1 2013-12-1 21:55
6
0
数学基础差,硬是没看懂椭圆曲线所用的公式..可以去看看openssl中的ecc源码,对你应该有所帮助.
雪    币: 341
活跃值: (133)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
地狱怪客 2 2013-12-2 08:54
7
0
我模模糊糊的记忆中有人发过类似的帖子。。。好像代码很长很长。。我也看不懂 不知道这个有没有帮助http://bbs.pediy.com/showthread.php?t=152615&highlight=%E5%8A%A0%E5%AF%86+%E5%AF%86%E7%AE%97+%E7%AE%97%E6%B3%95
游客
登录 | 注册 方可回帖
返回