在做项目过程中遇到需要获取pc机的唯一识别码问题,经过了一些分析,记录如下:

    目前比较流行的获取唯一标识的方式是获取cpu,硬盘,网卡,主板等硬件信息的唯一标识码。

    cpu唯一标识码,就是所谓的 “CPU序列号" ,其实是CPUID。该方法在若干年前可以使用,但是目前由于从某个版本以后取到的都是统一的值,INTER不再提供唯一ID。既同一频率同一型号的cpuID其实是同一个。

    硬盘唯一标识码,就是卷序列号,这个其实属于文件系统的一部分,可以方便地修改。方法网上有,懂点电脑知识的都会。太不安全了。

    网卡唯一标识码,就是MAC,理论上来说,MAC是全网唯一的。但是也存在特殊情况,在不插网线的情况下,有些机器MAC会获取为空。通过数据采集,以4000个注册用户作为标本,统计结果如下:

   

android硬件唯一标识 硬件唯一识别码_android硬件唯一标识

显然还是有很多重复的。

    主板唯一标识码:关键问题是不一定能获取到!

    混合获取:就是结合几种硬件信息进行混合拼接,但是每拼接一种硬件信息,唯一标识的长度就会拉长。过长的唯一标识并不利于拷贝或者记忆。尤其是离线情况下需要到服务器激活。

    GUID:这种方法我认为是现在最可靠的方法了,生成一个GUID然后使用md5或者其他方式进行加密成code,存到注册表中。然后使用这个code与账户或者卡号关联。但是这种方式并不能解决重装系统的问题。

    综上,很难有一种方式能达到100%的判断准确,个人觉得,如果一个方法能达到90%的准确度,就使用这种方式吧,其他10%的用户就人工处理吧。最好的方式还是加入服务器的干预,这样才能做到唯一。