缥缈峰一座01号

梁二伯的窝

  DonewsBlog  |  Donews首页  |  Donews社区  |  Donews邮箱  |  我的首页  |  联系作者  |  聚合   |  登录
  86篇文章 :: 0篇收藏:: 27篇评论:: 0个Trackbacks

公告

Equality && Free

文章

收藏

相册

存档


正在读取评论……


近日一朋友问我如何生成串唯一表示机器的机器码,用于进行序列号生成。本文就是我的思路。
lspci -v 剔除usb等设备后 md5计算出类似d41d8cd98f00b204e9800998ecf8427e的串A,长度32。
获取各个磁盘分区大小,md5生成串B。
AB异或得到长度32的串。把其BCD压缩,得到长度16的串
把串分为BLOCK1,BLOCK2两个串(长度各为8,既64bit)
KEY-A:由mac的48bit+16bit的软件版本号,
KEY-B:对应版本中的密钥64bit(程序中设定)
加密算法:DES
BLOCK1用KEY-A加密
把上一步的结果和BLOCK2异或
把上一步结果用KEY-A加密
把上一步结果用KEY-B解密
再用KEY-A加密。
得到串S。
假设S为:0x37 0x9F 0xD1 0x02 0x5A 0xBD 0x23 0x71
从S中抽取数字从左到右排列: 3 7 9 1 0 2 5 2 3 7 1
抽取字母从左到右排列:F D A B D
转换为数字(减去10):5 3 0 1 3 
两个串合并:3 7 9 1 0 2 5 2 3 7 1  5 3 0 1 3 
这样就生成一个机器码了:3791-0252-3715-3013


Trackback: http://tb.donews.net/TrackBack.aspx?PostId=1263029


[点击此处收藏本文]  发表于2008年03月14日 4:36 PM




正在读取评论……

发表评论

大名:
网址:
验证码
评论