从Win98起,M$(编辑注:即Microsoft,下同) 的产品安装Key从原来的10位数字改为25位字符,这一改动,
代表着M$告别了简单的校验和,从此投入了椭圆曲线法的怀抱。从密码学的角度来看,这绝对是一个里程碑,
因为当时椭圆曲线法仍在研究论证阶段,M$是第一个将之实用以商业产品的厂家。
那么在这25个字符里到底有什么呢?
1.Base24
这25个字符实际是114bits的数据用Base24进行UUCode后的结果,做为安装Key,这个Base必须绝对避免误认,所以M$选择了以下这24个字符做为UUCode的Base:
BCDFGHJKMPQRTVWXY2346789
所以,如果你的安装Key 有这24个字符以外的字符的话,你完全可以把它丢到垃圾筒里去了━━不用试就知道它根本通不过了。
2.114 bits
UUDecode后得到的114位按Intel高位在后的格式表示如下:
[ X XXXXXXXX XXXXXXXX XXXXXXXXXXXXXXXXXX ] Total 114 Bits
| | | \ 55 Bits Sign
| | \ 28 Bits Hash
| \ 30 Bits Serial \ 31 Bits Data
\ 1 Bits Flag /
Flag: 不明标志,目前所见的各类Key中这一位总是为0。
Serial:用户序列号,转成十进制表示为AAAABBBBBB,对应显示为:
零售版:xxxxx-AAA-BBBBBBx-xxxxx
OEM版: xxxxx-OEM-0AAAABx-BBBBB
以上31bits总称为Data,是CDKey中的基本部分。
Hash:Data经特定处理得到的结果,见后文。
Sign:Hash值的椭圆曲线签名,见后文。
3.椭圆曲线签名算法
要说明椭圆曲线签名算法可不是一件容易的事,有兴趣的可以自己用“椭圆曲线”或是“elliptic curve”在搜索引擎
找相关的资料来看吧,这里只简单介绍M$的用法。
所谓椭圆曲线是指这样一类曲线方程:
y^2 + a1*xy + a3*y = x^3 + a2*x^2 + a4*x + a6
在密码学里用的是它的两个特例,而M$用的更是这两个特例中的特例:
y^2 = x^3 + a*x + b ( mod p )
当a、b、p选定后,就可以确定一个椭圆曲线,再选择一个生成点 G(gx,gy),
于是,存在一个最小的整数q使得q*G=O,然后,再任意选择一个整数 k mskshow CCC64-69Q48-Y3KWW-8V9GV-TVKRM
Key CCC64-69Q48-Y3KWW-8V9GV-TVKRM is for P-WinXP_Pro, Sign is OK.
Flag = 0, Serial = 005-080936, Hash = 5AA62EB, Sign = ED6AA259.
This key is for Windows XP Pro, Simplified chinese OEM/MSDN, serial is xxxxx-005-080936x-xxxxx
> mskshow GJ27Y-XHH2X-GRR3G-Q3WVJ-H9P33
Key GJ27Y-XHH2X-GRR3G-Q3WVJ-H9P33 is for E-WinXP_Pro-2, Sign is OK.
Flag = 0, Serial = OEM-006400-00001, Hash = 2177C11, Sign = 79B54F13.
This key is for Windows XP Pro, English Corporate Select Editions, serial is xxxxx-OEM-006400x-00001
> mskshow BCC64-69Q48-Y3KWW-8V9GV-TVKRM
Key BCC64-69Q48-Y3KWW-8V9GV-TVKRM is for Unknow Product, Sign is not check
Flag = 0, Serial = 005-080936, Hash = 5AA62EB, Sign = 564E8259.
This key is for some product I don|*|t know, serial is xxxxx-005-080936x-xxxxx
> mskshow ACC64-69Q48-Y3KWW-8V9GV-TVKRM
Invaild key: ACC64-69Q48-Y3KWW-8V9GV-TVKRM.
This key is not a vaild M$ CD key.
作者: Bug Fix
|