一种生成设备唯一设备号的方法和系统的制作方法
【专利摘要】本申请公开了一种生成设备唯一设备号的方法和系统,其中所述方法包括:获取所述设备的至少一个硬件信息号;在操作系统API层面提供获得设备唯一设备号的接口;响应于上层应用调用所述接口,获取所述应用的开发者ID;将开发者ID和所述至少一个硬件信息号组合为第二字符串;计算所述第二字符串的哈希值作为所述设备的唯一设备号。本发明方法和系统能为同一个开发者提供一致的设备ID,并且在刷机后也保证同一个开发者能获得与刷机前一致的设备ID,既最大程度的避免了用户隐私泄露,又为应用开发者提供了最好的数据统计体验。
【专利说明】
一种生成设备唯一设备号的方法和系统
技术领域
[0001]本申请涉及电数字数据处理领域,尤其涉及一种生成设备唯一设备号的方法和系统。
【背景技术】
[0002]在移动设备上进行应用开发时,很多应用都需要使用设备唯一号来区分终端,以确定设备的身份,所以在移动操作系统上都会提供获得设备唯一ID的接口。目前提供该接口的方法有三类:
[0003]一是不区分调用者,无论任何应用来调用,都返回一个一致的设备ID给调用者,但是系统刷机后,不保证与刷机前的设备ID相同。这个方法的问题在于刷机后设备ID会变,在这种情况下应用无法确定是否是原来的设备。
[0004]二是不区分调用者,无论任何应用来调用,都返回一个一致的设备ID给调用者,读取硬件特征值,在系统刷机后,也能获得与刷机前相同的设备ID。这个方法认为刷机前后的设备是同一个设备,避免了方法一的缺陷。但是方法一和方法二由于不区分调用者,所以所有的应用都返回的是一个设备ID,这容易造成用户的隐私泄露,通过拦截设备的通讯,就可以在网络上截获到设备的所有行为,从而追踪出用户的所有行为。
[0005]三是每个应用安装时为此应用单独生成一个设备ID,这种方法避免了用户隐私泄露。但是对于同一个开发者在不同应用间做数据统计是很麻烦的事情,另外该方法在重新刷机后不保证会获得相同的设备ID,也会为开发者统计数据造成麻烦。
【发明内容】
[0006]本申请的目标在于提供一种生成设备唯一设备号的方法和系统,其为同一个开发者提供一致的设备ID(设备号),并且在刷机后也保证同一个开发者能获得与刷机前一致的设备ID。
[0007]本申请的目标由一种生成设备唯一设备号的方法实现,该方法包括:
[0008]获取所述设备的至少一个硬件信息号;
[0009]在操作系统API层面提供获得设备唯一设备号的接口;
[0010]响应于上层应用调用所述接口,获取所述应用的开发者ID;
[0011]将开发者ID和所述至少一个硬件信息号组合为第二字符串;
[0012]计算所述第二字符串的哈希值作为所述设备的唯一设备号。
[0013]本申请的目标还由一种生成设备唯一设备号的系统实现,该系统包括:
[0014]硬件信息号获取模块,用于获取所述设备的至少一个硬件信息号;
[0015]接口提供模块,用于在操作系统API层面提供获得设备唯一设备号的接口;
[0016]开发者ID获取模块,用于响应于上层应用调用所述接口,获取所述应用的开发者ID;
[0017]第二组合模块,用于将开发者ID和所述至少一个硬件信息号组合为第二字符串;
[0018]设备号生成模块,用于计算所述第二字符串的哈希值作为所述设备的唯一设备号。
[0019]通过本发明方法或系统,设备唯一标识与应用开发者ID相结合,不同的开发者在同一个设备上获得的设备唯一标识不同,同一个开发者在同一个设备上刷机前后获得的设备唯一标识是相同的。而且,设备标识是HASH(哈希)运算后的结果,不可逆推原始数据。通过拦截网络数据包,无法获取最终用户的全部行为,既避免了隐私泄露,又为应用开发者提供了最好的数据统计体验。
【附图说明】
[0020]本发明将在下面参考附图并结合优选实施例进行更完全地说明。
[0021 ]图1为根据本发明方法的一实施例的流程图。
[0022]图2为根据本发明系统的一实施例的结构示意图。
[0023]为清晰起见,这些附图均为示意性及简化的图,它们只给出了对于理解本发明所必要的细节,而省略其他细节。
【具体实施方式】
[0024]通过下面给出的详细描述,本发明的适用范围将显而易见。然而,应当理解,在详细描述和具体例子表明本发明优选实施例的同时,它们仅为说明目的给出。
[0025]图1示出了根据本发明的用于生成设备唯一设备号的方法的一实施例的流程图,该方法开始于步骤S10,获取设备中的硬件信息如CPU序列号nbl、调制解调器串号nb2和无线网卡MAC地址nb3等。在其它实施例中,可仅获取前述硬件信息中的一个或两个,和/或获取设备的其它硬件信息。之后,在步骤S20,将上述三个号码组合为一个串nbraw,获得的组合串nbraw就是有效的硬件唯一 ID。组合方法包括但不限于以下的方法:
[0026]A、可以将这些硬件信息在设备内存上直接拷贝到一个连续的内存区域形成nbraw。该方案为首先推荐方案,因为这种方案效率最高,同时内存占用最少。
[0027]B、可以将这些硬件信息转换为字符形式,然后拼接为一个完整的字符串以成为nbrawo
[0028]C、可以将这些硬件信息分别计算HASH值后,再按A或B的处理组合为nbraw。
[0029]之后,在步骤S30,计算nbraw的HASH值,将此值作为设备ID的基础系统值nbsys。在步骤S40,在操作系统中实现一个供其他应用获取设备唯一设备号的服务idserviced,该服务在系统API层面提供获得设备唯一ID的接口 idfunct1n,idfunct1n代表获取设备唯一ID号的接口函数族。在步骤S50,在调用接口 idfunct1n时,确定是操作系统内部服务或进程调用该接口还是上层应用调用该接口。当确定是操作系统内部服务或进程需要获得设备唯一标识号而调用idfunct1n时,处理进行到步骤S55,服务idserviced直接将基础系统值nbsys返回给调用者。而当确定是上层应用需要获得设备唯一标识号而调用idfunct1n时,处理进行到步骤S57,服务idserviced通过应用管理器,检索出该应用的开发者ID。然后在步骤S60,将开发者ID与设备ID的基础系统值nbsys组合为一个完整串nbaraw,组合方法包括但不限于以下的方法:I)将开发者ID与基础系统值nbsys在设备内存上直接拷贝到一个连续的内存区域形成nbaraw;或者2)将开发者ID与基础系统值nbsys转换为字符形式,然后拼接为一个完整的字符串以成为nbaraw;或者3)将开发者ID与基础系统值nbsys分别计算HASH值后,再按A或B的处理组合为nbaraw。之后,在步骤S70,计算完整串nbaraw的HASH值nba,此值即为该开发者获取的本设备的唯一标识,将最终的设备唯一标识nba返回给调用者。
[0030]本发明在生成设备ID时,结合硬件特征和开发者信息,为同一个开发者提供一致的设备ID,并且在刷机后也保证同一个开发者能获得与刷机前一致的设备ID,而在同一个设备上不同开发者获得的设备唯一标识是不同的,既最大程度的避免了用户隐私泄露,又为应用开发者提供了最好的数据统计体验。
[0031]图2示出了本发明的用于生成设备唯一设备号的系统的一实施例的结构示意图,该系统包括:硬件信息号获取模块10,用于获取所述设备的两个以上硬件信息号如CPU序列号、调制解调器串号和/或无线网卡MAC地址;第一组合模块20,将获取的两个以上硬件信息号组合为第一字符串;基础系统值获得模块30,用于计算第一字符串的哈希值作为基础系统值;接口提供模块40,用于在操作系统API层面提供获得设备唯一设备号的接口;开发者ID获取模块50,用于响应于上层应用调用所述接口,获取所述应用的开发者ID;第二组合模块60,用于将开发者ID和所述基础系统值组合为第二字符串;设备号生成模块70,用于计算所述第二字符串的哈希值作为所述设备的唯一设备号。
[0032]除非明确指出,在此所用的单数形式“一”、“该”均包括复数含义(即具有“至少一”的意思)。应当进一步理解,说明书中使用的术语“具有”、“包括”和/或“包含”表明存在所述的特征、步骤、操作、元件和/或部件,但不排除存在或增加一个或多个其他特征、步骤、操作、元件、部件和/或其组合。如在此所用的术语“和/或”包括一个或多个列举的相关项目的任何及所有组合。除非明确指出,在此公开的任何方法的步骤不必精确按照所公开的顺序执行。
[0033]—些优选实施例已经在前面进行了说明,但是应当强调的是,本发明不局限于这些实施例,而是可以本发明主题范围内的其它方式实现。
【主权项】
1.一种生成设备唯一设备号的方法,其特征在于,所述方法包括: 获取所述设备的至少一个硬件信息号; 在操作系统API层面提供获得设备唯一设备号的接口 ; 响应于上层应用调用所述接口,获取所述应用的开发者ID; 将开发者ID和所述至少一个硬件信息号组合为第二字符串; 计算所述第二字符串的哈希值作为所述设备的唯一设备号。2.根据权利要求1所述的方法,其特征在于,所述方法还包括: 响应于所述至少一个硬件信息号为多个,将获取的多个硬件信息号组合为第一字符串; 其中将开发者ID和所述至少一个硬件信息号组合为第二字符串包括将开发者ID和所述第一字符串组合为第二字符串。3.根据权利要求2所述的方法,其特征在于,所述方法还包括: 响应于组合得到第一字符串,计算第一字符串的哈希值作为基础系统值; 其中将开发者ID和所述第一字符串组合为第二字符串包括将开发者ID和所述基础系统值组合为第二字符串。4.根据权利要求1-3任一所述的方法,其特征在于,所述硬件信息号包括下述之一或多个:CPU序列号、调制解调器串号和无线网卡MAC地址。5.根据权利要求1-3任一所述的方法,其特征在于,实现所述组合的方式选自下述之 A、将待组合的内容在设备内存上直接拷贝到一个连续的内存区域形成组合串; B、将待组合的内容转换为字符形式,然后拼接为字符串; C、将待组合的内容分别计算哈希值,然后再按A或B的方式形成字符串。6.根据权利要求1或2所述的方法,其特征在于,所述在操作系统API层面提供获得设备唯一设备号的接口通过在操作系统中实现一个供其它应用获取设备唯一设备号的服务实现。7.一种生成设备唯一设备号的系统,其特征在于,所述系统包括: 硬件信息号获取模块,用于获取所述设备的至少一个硬件信息号; 接口提供模块,用于在操作系统API层面提供获得设备唯一设备号的接口; 开发者ID获取模块,用于响应于上层应用调用所述接口,获取所述应用的开发者ID; 第二组合模块,用于将开发者ID和所述至少一个硬件信息号组合为第二字符串; 设备号生成模块,用于计算所述第二字符串的哈希值作为所述设备的唯一设备号。8.根据权利要求7所述的系统,其特征在于,所述系统还包括: 第一组合模块,用于响应于所述至少一个硬件信息号为多个,将获取的多个硬件信息号组合为第一字符串; 其中所述第二组合模块用于将开发者ID和所述第一字符串组合为第二字符串。9.根据权利要求8所述的系统,其特征在于,所述系统还包括: 基础系统值获得模块,用于响应于组合得到第一字符串,计算第一字符串的哈希值作为基础系统值; 其中所述第二组合模块用于将开发者ID和所述基础系统值组合为第二字符串。10.根据权利要求7-9任一所述的系统,其特征在于,所述硬件信息号包括下述之一或多个:CPU序列号、调制解调器串号和无线网卡MAC地址。
【文档编号】G06F9/44GK105975272SQ201610292488
【公开日】2016年9月28日
【申请日】2016年5月5日
【发明人】杨玉奇
【申请人】北京元心科技有限公司