首页
社区
课程
招聘
[原创][TX2010 第二阶段 第二题]keygen源代码(效率优化版)
发表于: 2010-11-6 12:02 13159

[原创][TX2010 第二阶段 第二题]keygen源代码(效率优化版)

ccfer 活跃值
16
2010-11-6 12:02
13159

简单描述一下要点,已知条件:
a = C564EEF070E69190
b = 22996B9C33AEEFDB
p = C564EEF070E69193
n = C564EEF19A080B07
px = 2223A1D595845FA2
py = 1C4EEE9222DDDA62
qx = 297A4A1E5B1FC99B
qy = 880198E3724F9FEE

对应椭圆曲线:
y^2 = x^3 + C564EEF070E69190*x + 22996B9C33AEEFDB

用ECDLP Solver求解出d:
d = 54656E63656E7420 = "Tencent "

签名过程:
e = sha1(name)
r = px
s = (rd+e) mod n
r和s拼起来就是16字节的签名结果
直接用px虽然不安全,但是合法,额外的好处是省去了对大数库的依赖:)

解决了这个ecdsa部分以后,其他算法比如blowfish和sms4都应该没什么难度了,找到标准算法,只要细心对比修改一下就可以了。


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 7
支持
分享
最新回复 (14)
雪    币: 1115
活跃值: (122)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
2
密码在exe程序里面

.data:0046A54C aTencent        db 'Tencent '
.data:0046A554 dword_46A554    dd 1E4A7A29h            ; DATA XREF: sub_403210+CBo
.data:0046A558                 dd 9BC91F5Bh
.data:0046A55C dword_46A55C    dd 0E3980188h           ; DATA XREF: sub_403210+E7o
.data:0046A560                 dd 0EE9F4F72h
.data:0046A564 unk_46A564      db    0                 ; DATA XREF: sub_408C30+150o
.data:0046A564                                         ; sub_4092F0+6Bo ...
.data:0046A565                 db    0
.data:0046A566                 db    0
2010-11-6 12:06
0
雪    币: 6051
活跃值: (1441)
能力值: ( LV15,RANK:1473 )
在线值:
发帖
回帖
粉丝
3
交白卷了来学习了

第一次见到椭圆曲线算法。。。
2010-11-6 12:10
0
雪    币: 111
活跃值: (201)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
第一次听说sms4,ccfer果然彪悍
2010-11-6 12:16
0
雪    币: 1632
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
截止时间后准时放出。
2010-11-6 12:20
0
雪    币: 8209
活跃值: (4488)
能力值: ( LV15,RANK:2473 )
在线值:
发帖
回帖
粉丝
6
我也没见过的,抓个常数google出来的
2010-11-6 12:24
0
雪    币: 295
活跃值: (11)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
7
sms4还算好搜的。
国际上公开的分组对称算法100种以上呢  要真找个偏僻的不好搜到蛛丝马迹的 或者是QQ私藏的商用的对称算法,这3天时间还真不好弄出来。
2010-11-6 12:26
0
雪    币: 2556
活跃值: (945)
能力值: ( LV12,RANK:1010 )
在线值:
发帖
回帖
粉丝
8
楼主太强了,得好好补补密码学了
2010-11-6 12:57
0
雪    币: 1314
活跃值: (2201)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
9
ccfer真是神啊,太厉害了,不参加比赛就是把五千多块钱丢水里了,太浪费了
2010-11-6 13:07
0
雪    币: 279
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
代码写的漂亮, 学习了
2010-11-6 13:56
0
雪    币: 822
活跃值: (380)
能力值: ( LV12,RANK:310 )
在线值:
发帖
回帖
粉丝
11
有个关于ECDLP Solver问题请教一下楼主,不知楼主用了多长时间算出来的

我当时也试了一下这个,跑了一天没有结果,估计是我哪里理解不对,参数填错了,以下是我的job_32bit.txt:

GF := GF(14223756239596589459);
E := EllipticCurve([GF|14223756239596589456,2493142187352453083]);
G := E![2459987760183009186,2039829992663013986];
K := E![2988782796952029595,9800282366777729006];
/*
FactorCount:=6;
2;
2;
13;
29;
23869;
14821185007;
*/

楼主能否把你用的配置文件分享一下, 谢谢
2010-11-8 09:16
0
雪    币: 8209
活跃值: (4488)
能力值: ( LV15,RANK:2473 )
在线值:
发帖
回帖
粉丝
12
你FactorCount那里不对,14223756244581616391是个素数
据说时间是靠运气的,运气好的几分钟,运气不好1个多小时也差不多

GF := GF(14223756239596589459);
E := EllipticCurve([GF|14223756239596589456,2493142187352453083]);
G := E![2459987760183009186,2039829992663013986];
K := E![2988782796952029595,9800282366777729006];

/*
FactorCount:=1;
14223756244581616391;
*/
2010-11-8 09:20
0
雪    币: 822
活跃值: (380)
能力值: ( LV12,RANK:310 )
在线值:
发帖
回帖
粉丝
13
谢谢指教,终于明白了!
2010-11-8 09:59
0
雪    币: 349
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
晕...膜拜ccfer
2010-11-9 13:58
0
雪    币: 76
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
楼主,,,你头像里的那个人长得像我爷爷。。。
2011-8-10 13:14
0
游客
登录 | 注册 方可回帖
返回
//