算法总结:
1.对输入的假序列号进行变换
sn = s1-s2-s3-s4-s5-s6-s7-s8
s6' = s6 + s1
s7' = s7 | (s6 + s1)
s8' = s8 | (s2 + s3 + s4 + s5)
SerNum = s1-s2-s3-s4-s5-s6'-s7'-s8'
2.运算
c = SerNum ^ e mod n;
3.比较c和name
利用RSATool搞定RSA参数:
n = 88C5F181D34D4B6E5375F1511D455E8901127EB1F015E3AC717AE412C95841DF
e = 10001
n = p * q
p:92D9586271DFD8D47C9AE783DED37E9F
q:EE6F5C9077D0A54887558B9CA262B4C1
d:7AAB6636F5681EDE3D96CBAFDF9BE6F38A66563EB122E21AE8B94121DC164781
逆推:
1.将用户名每四个字符倒序排列,并且转成十六进制
2.进行ESA运算
3.计算SerNum
4.进行XOR运算,求得最终的serial number
ID:luying10
SN:8F2D4BBE-A742BFC7-0BBDF498-9E74023E-8AFCE799-AA97BDD7-1B8A741B-8980044D