我想用硬盘号与CPU号组合来产生唯一的机器码?如何操作?

litangel 2003-09-15 11:52:31
因为有的硬盘没有号,所以
我想用硬盘号与CPU号组合来产生唯一的机器码

硬盘号与CPU号已经取出,
但如何将这两个号组合起来?
有什么好的办法吗?

我的办法是异或,如下:
function MyEnc(Str, str2:string):string;
var
i,j: integer;
begin
Result := '';
j := 0;
for i := 1 to Length(Str) do begin
Result := Result + Chr(Byte(Str[i]) xor Byte(str2[j]));
j := (j+1) mod (Length(str2));
end;
end;

可得到的却是“Wu`}ps 2”
这样做可靠吗?产生的组合号是唯一的吗?

谢谢指教。
...全文
237 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
litangel 2003-09-22
  • 打赏
  • 举报
回复
结了吧。
litangel 2003-09-17
  • 打赏
  • 举报
回复
crossbow(La Vida Es Amor)::

CRC(HDID + CPUID)

能说得稍详细些吗?
crossbow 2003-09-16
  • 打赏
  • 举报
回复
CRC(HDID + CPUID)
litangel 2003-09-16
  • 打赏
  • 举报
回复
dyzg(地藏):
呵呵。。你说得对。不唯一就不唯一吧,重复的可能性也是非常非常地小的。

fj218(fj218):
1.你说得对。现在读硬盘序列号都是用vxd,有的98下没有,就读不出。
3.对。

主板序列号?呵呵。。我回去研究一下。

我现在想采用硬盘序列号+CPU号,cpu号不管98还是2000都能读出来,再加上硬盘号,应该能保证唯一了,可要是两个直接连在一起,太长了,所以我想作一下变换。

Devlopered 2003-09-16
  • 打赏
  • 举报
回复
学习
dyzg 2003-09-16
  • 打赏
  • 举报
回复
为啥一定要追求世界唯一呢?偶尔重复并不影响你收钱嘛
litangel 2003-09-15
  • 打赏
  • 举报
回复
jpyc(九品御厨-为delphi学ASP.NE):
呵呵。。。

我就是不知道自己用什么算法好。
我怕人家原来硬盘号是唯一的,CPU号也差不多是唯一,
我怕我自己搞了一下,结果不唯一了,
那就不好了,

呵呵。。。
jpyc 2003-09-15
  • 打赏
  • 举报
回复
取出来了,算法自己定吧
flyhot 2003-09-15
  • 打赏
  • 举报
回复
学习
litangel 2003-09-15
  • 打赏
  • 举报
回复
lihao_ningxia(耗子)
GETSYSTEMINFO得到的只是硬盘的分区号
硬盘如果重新分区,这个号就变化了。
上海老李 2003-09-15
  • 打赏
  • 举报
回复
用GETSYSTEMINFO就可以得到
litangel 2003-09-15
  • 打赏
  • 举报
回复
其中str为硬盘的序列号,str2为CPUID。
fj218 2003-09-15
  • 打赏
  • 举报
回复
随便定一个算法吧,实在不行就硬盘序列号+CPU序列号。
最近我也在研究这方面的知识,在多台机上测试过硬盘、主板和CPU等各种序列号。
谈谈我的体会:
1、我在win98环境下测试过几台电脑硬盘序列号,有的读不出来,拷入SMARTVSD.VXD文件后重起能读出,三星和SCSI硬盘我还未测试(估计都没有序列号),所以我排除了硬盘序列号。
2、卷标也不好,不但格式化后就变了,而且唯一性也差,我就发现两台电脑的硬盘卷标一样(估计是克隆的),所以根本不考虑。
3、至于CPU序列号,相同批次的CPU序列号相同,我已经测试出来,虽然也不唯一,但我测试的几台电脑的CPU(AMD和Intel)都有序列号,无论是在Win98还是win2k环境,总比有的硬盘序列号没有还是要好一点。
4、主板序列号相同批次的主板也相同,和CPU序列号差不多。
要考虑到绝对唯一性是不可能的,为此我决定采取主板序列号+CPU序列号
jpyc 2003-09-15
  • 打赏
  • 举报
回复
这样,你弄几个加密过的软件,看看,猜猜他的算法
cmain83 2003-09-15
  • 打赏
  • 举报
回复
自己定算法.

能确保唯一不太可能.

要真的要唯一, 那就要十分复杂的算法
litangel 2003-09-15
  • 打赏
  • 举报
回复
呵呵。。。

取硬盘的序列号,如,三星没有号。

在有的98下能取出来,在有的98下又取不出来,

唉。。。
dickeybird888 2003-09-15
  • 打赏
  • 举报
回复
其实硬盘的序列号是唯一的,你用程序直接取硬盘序列号就可以了
jianxin_js 2003-09-15
  • 打赏
  • 举报
回复
不能确保唯一

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧