本发明涉及信息安全技术领域,具体而言,涉及一种出生日期数据的脱敏方法及装置。
背景技术:
目前,在业务生产系统中已经积累了海量的客户出生日期等敏感数据。客户的出生日期(以及含有出生日期的身份证号)是非常重要的隐私信息。如果这些数据泄漏,会给数据拥有者带来经济、乃至声誉上的损失。因此,数据拥有者在使用客户信息时,会对客户的出生日期信息进行脱敏处理。
数据脱敏,又称为数据漂白、数据去隐私化或数据变形,指对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护。
现有技术中,在对客户的生日进行脱敏时,常用的方法是固定替换,即将所有客户的出生日期随机替换为同一个固定的日期,这种方法使得所有客户的生日日期都是同一天,在做统计时,不具有数据分析的价值,或者采取将所有客户的出生日期进行随机替换,变成另外一个出生日期,但是会使得得到的出生日期不合理,比如出生日期出现在未来的某一天。
综上,现有的出生日期脱敏方法通常会造成失去出生日期本身所属的年龄范围的特点,从而在用于数据分析时价值不大的问题。
技术实现要素:
有鉴于此,本发明的目的在于提供一种出生日期数据的脱敏方法及装置,以保留脱敏后的出生日期本身的属性特点,保护客户隐私的同时,不降低对数据分析的价值。
第一方面,本发明实施例提供了一种出生日期数据的脱敏方法,包括:
获取待脱敏的出生日期和基准日期,所述基准日期晚于待脱敏的出生日期、且早于或等于当前日期;
根据待脱敏的出生日期与所述基准日期之间的第一间隔天数,从预存的多级区间段中,确定所述待脱敏的出生日期所属的第一区间段,其中,不同的区间段对应不同的年龄范围,同一区间段对应相同的年龄范围;
按照预设的脱敏算法,确定该待脱敏的出生日期在所属的所述第一区间段中对应的脱敏后的出生日期。
结合第一方面,本发明实施例提供了第一方面的第一种可能的实施方式,所述按照预设的脱敏算法,确定该待脱敏的出生日期在所属的所述第一区间段中对应的脱敏后的出生日期,包括:
按照预设的脱敏算法,确定在该待脱敏的出生日期所属的第一区间段中,所述脱敏后的出生日期相对所述基准日期的天数偏移量;
根据所述基准日期,以及所述脱敏后的出生日期相对所述基准日期的天数偏移量,确定所述脱敏后的出生日期。
结合第一方面的第一种可能的实施方式,本发明实施例提供了第一方面的第二种可能的实施方式,所述按照预设的脱敏算法,确定脱敏后的出生日期相对所述基准日期的天数偏移量,包括:
任取一个干扰值,所述干扰值为大于或等于0的任意整数;以及
根据所述第一间隔天数、和在所述第一区间段之前的区间段的区间长度,确定第二间隔天数;其中,所述第二间隔天数为所述第一间隔天数减去在所述第一区间段之前的各级区间段的区间长度之后的数;在所述第一区间段之前的区间段是指对应的间隔天数小于所述第一间隔天数的区间段;
根据所述第二间隔天数和所述干扰值,生成所述脱敏后的出生日期相对所述基准日期的天数偏移量。
结合第一方面的第二种可能的实施方式,本发明实施例提供了第一方面的第三种可能的实施方式,所述根据所述第二间隔天数和所述干扰值,生成所述脱敏后的出生日期相对所述基准日期的天数偏移量,包括:
将所述第二间隔天数对应的数值在目标进制下的每一位上的值,与所述干扰值在该目标进制下的相应位上的值进行和运算;
将所述和运算后的值与所述目标进制对应的进制数进行模运算,得到所述天数偏移量在所述相应位上的值;
将得到的所述天数偏移量在所述目标进制下的各个位上的值进行整合后,加上在所述第一区间段之前的各级区间段的区间长度,得到所述目标进制下的天数偏移量对应的数值。
结合第一方面的第三种可能的实施方式,本发明实施例提供了第一方面的第四种可能的实施方式,
当所述待脱敏的出生日期所属的第一区间段是所述多级区间段的第一级区间段或第二级区间段时,所述目标进制为八进制,所述模运算为模八运算;
当所述待脱敏的出生日期所属的第一区间段是所述多级区间段的第三级区间段时,所述目标进制为十六进制,所述模运算为模十六运算;
所述第一级区间段对应的所述第一间隔天数的范围是大于或等于0且小于32768天,所述第二级区间段对应的所述第一间隔天数的范围是大于或等于32768天且小于65536天,所述第三级区间段对应的所述第一间隔天数的范围是大于或等于65536天且小于1048576天。
结合第一方面,本发明实施例提供了第一方面的第五种可能的实施方式,所述确定该待脱敏的出生日期在所属的所述第一区间段中对应的脱敏后的出生日期之后,还包括:
获取脱敏后的出生日期和所述基准日期,所述基准日期晚于脱敏后的出生日期;
根据所述脱敏后的出生日期与所述基准日期之间的第三间隔天数,从所述预存的多级区间段中,确定所述脱敏后的出生日期所属的第二区间段;
按照预设的还原算法,确定该脱敏后的出生日期在所属的所述第二区间段中对应的脱敏前的出生日期。
结合第一方面的第五种可能的实施方式,本发明实施例提供了第一方面的第六种可能的实施方式,所述按照预设的还原算法,确定该脱敏后的出生日期在所属的所述第二区间段中对应的脱敏前的出生日期,包括:
根据预设的还原算法,确定在该脱敏后的出生日期所属的第二区间段中,所述脱敏前的出生日期相对所述基准日期的天数偏移量;
根据所述基准日期,以及所述脱敏前的出生日期相对所述基准日期的天数偏移量,确定所述脱敏前的出生日期。
结合第一方面的第六种可能的实施方式,本发明实施例提供了第一方面的第七种可能的实施方式,所述按照预设的还原算法,确定脱敏前的出生日期相对所述基准日期的天数偏移量,包括:
根据所述第三间隔天数、和在所述第二区间段之前的区间段的区间长度,确定第四间隔天数;其中,所述第四间隔天数为所述第三间隔天数减去在所述第二区间段之前的各级区间段的区间长度之后的数;在所述第二区间段之前的区间段是指对应的间隔天数小于所述第三间隔天数的区间段;
根据所述第四间隔天数和选择的一个干扰值,生成所述脱敏前的出生日期相对所述基准日期的天数偏移量;其中,所述一个干扰值为大于或等于0的整数。
第二方面,提供了一种出生日期的脱敏装置,包括:
获取模块,用于获取待脱敏的出生日期和基准日期,所述基准日期晚于待脱敏的出生日期、且早于或等于当前日期;
执行模块,用于根据待脱敏的出生日期与所述基准日期之间的第一间隔天数,从预存的多级区间段中,确定所述待脱敏的出生日期所属的第一区间段,其中,不同的区间段对应不同的年龄范围,同一区间段对应相同的年龄范围;
确定模块,按照预设的脱敏算法,确定该待脱敏的出生日期在所属的所述第一区间段中对应的脱敏后的出生日期。
第三方面,本发明实施例提供了一种出生日期数据的脱敏方法,包括:
第一设备接收第二设备发送的待脱敏的出生日期集合和基准日期,所述待脱敏的出生日期集合中包含多个待脱敏的出生日期,所述基准日期晚于各个待脱敏的出生日期、且早于或等于当前日期;
根据每一个待脱敏的出生日期与所述基准日期之间的第一间隔天数,从预存的多级区间段中,确定该待脱敏的出生日期所属的第一区间段,按照预设的脱敏算法,确定该待脱敏的出生日期在所属的所述第一区间段中对应的脱敏后的出生日期;
将所述待脱敏的出生日期集合中的每一个待脱敏的出生日期对应的脱敏后的出生日期发送给所述第二设备。
本发明实施例提供的一种出生日期数据的脱敏方法及装置,可以将待脱敏的出生日期脱敏成同区间段的出生日期,从而使得脱敏后的出生日期仍然在原有的出生日期所属的年龄范围,即保留了待脱敏的出生日期的原有的特定年龄范围不变,既保护可客户的隐私,又便于后续数据分析使用。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
图1示出了本发明实施例1所提供的一种出生日期数据的脱敏方法的流程图;
图2示出了本发明实施例1所提供的一种确定出生日期数据的具体脱敏方法的流程图;
图3示出了本发明实施例1所提供的一种对脱敏后的出生日期数据进行还原的方法流程图;
图4示出了本发明实施例1所提供的一种对脱敏后的出生日期数据进行还原的具体方法流程图;
图5示出了本发明实施例所2提供的一种出生日期数据的脱敏装置的结构示意图;
图6示出了本发明实施例3所提供的一种出生日期数据的脱敏方法流程图;
图7示出了本发明实施例3所提供的一种对脱敏后的出生日期数据进行还原的方法流程图。
图标:500-获取模块;501-执行模块;502-确定模块。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1
本发明实施例1提供了一种出生日期数据的脱敏方法,其流程图如图1所示,具体步骤如下所示:
s100,获取待脱敏的出生日期和基准日期,该基准日期晚于待脱敏的出生日期、且早于或等于当前日期。
在待脱敏的出生日期进行脱敏处理时,一般将基准日期定位当天的日期。
s110,根据待脱敏的出生日期和基准日期之间的第一间隔天数,从预存的多级区间段中,确定该待脱敏的出生日期所属的第一区间段,其中,不同的区间段对应不同的年龄范围,同一区间段对应相同的年龄范围。
通过以下过程对人口年龄特征进行分布:
世界卫生组织2015年发布的《世界卫生统计》中,指出今年来,全球人口平均寿命为71岁,其中女性73岁、男性68岁。其中在此次报告中的人口平均寿命为:男性74岁,女性77岁;美国的人口平均寿命为女性81岁、男性76岁。此外,女性的平均寿命最高的国际是日本(87岁),男性平均寿命最高的国家是冰岛(81.2岁)。
我国于2010年进行了第六次全国人口普查,据国家统计局2011年4月28日分布公告,显示中国总人口截止当时为1370536875。其中按年龄阶段划分为:
0-14岁人口为222459737,占16.60%;
15-59岁人口为939616410,占人口70.14%;
60岁及以上人口为177648705,占人口13.26%,其中65岁及以上人口为118831709人,占8.87%。
进一步的统计分析表明:
85岁及以上人口为7616148人,占总人口比例为0.5714%
89岁及以上人口为2699618人,占总人口比例为0.2026%;
100岁及以上人口为35934人,占总人口比例为0.0027%。
以上数据显示,当前人类的平均寿命在71岁左右。65岁及以上的人口在一个国家中占据比例较小,而85岁、89岁及以上的人口在一个国家占据的比例极低。因此,我们在脱敏处理出生日期是,涉及到的大部分数据都应当使得年龄在85岁以下,而89岁以上的出生日期就更少了,因此,可以按照年龄的范围,以基准日期为准,向前进行划分区间。
本发明实施例中将待脱敏的出生日期划分为三个区间段,划分依据是:当待脱敏的出生日期距离基准日期的间隔天数所属的范围是大于或等于0天且小于32768天时为第一级区间段、所属的范围是大于32768天且小于65536天时为第二级区间段、所属的范围是大于或等于65536且小于1048576天时为第三个区间段,其中32768天略大于89年且小于90年,65536天大于179年且小于180年,1048576天大于2870年且小于2871年,比如当选择的基准日期为2017年1月1日时,对应的第一级区间段代表的出生日期是晚于1927年4月16日且早于或等于2017年1月1日,第二级区间段代表的出生日期是晚于1837年7月28日且早于或等于1927年4月16日,第三级区间段代表的出生日期是晚于公元前854年2月6日且早于或等于1837年7月28日。特别的,当待脱敏的出生日期早于或等于公元前854年2月6日时,对其不进行脱敏。
其中,第一区间段并不是多级区间的第一级区间段,仅仅是为了叙述方便的称号。
s120,按照预设的脱敏算法,确定该待脱敏的出生日期在所属的第一区间段中对应的脱敏后的出生日期。
其中预设的脱敏算法,指为了使得脱敏后的出生日期与待脱敏的出生日期在同一个年龄范围内而使用的一些公式算法,将在之后的实施例中进行详细阐述。
在步骤s120中,具体确定步骤包括如下,其流程图如图2所示:
s200,按照预设的脱敏算法,确定在该待脱敏的出生日期所属的第一区间段中,脱敏后的出生日期相对基准日期的天数偏移量。
s210,根据基准日期,以及脱敏后的出生日期相对基准日期的天数偏移量,确定脱敏后的出生日期。
其中天数偏移量,是指脱敏后的出生日期早于基准日期的具体天数。确定该具体天数的方法如下:
(1)任取一个干扰值,所述干扰值为大于0的任意整数。
(2)根据该第一间隔天数、和在第一区间段之前的区间段的区间长度,确定第二间隔天数;其中该第二间隔天数为第一间隔天数减去在第一区间段之前的各级区间段的区间长度之后的数;在第一区间段之前的区间段是指对应的间隔天数小于第一间隔天数的区间段。
(3)根据该第二间隔天数和上述干扰值,生成脱敏后的出生日期相对基准日期的天数偏移量。
在第(3)步中,具体包括:
将该第二间隔天数对应的数值在目标进制下的每一位上的值,与干扰值在该目标进制下的相应位上的值进行和运算。
将该和运算后的值与目标进制对应的进制数进行模mod运算,得到天数偏移量在相应位上的值。
其中模运算或者称为mod运算,即求余运算,“模”是“mod”的音译。
将得到的天数偏移量在目标进制下的各个位上的值进行整合后,加上在第一区间段之前的各级区间段的区间长度,得到目标进制下的天数偏移量对应的数值。
其中,对目标进制和模运算的限定有以下规定:
当待脱敏的出生日期所属的第一区间段是多级区间段的第一级区间段或第二级区间段时,上述目标进制为八进制,模运算为模八运算。
当待脱敏的出生日期所属的第一区间段是多级区间段的第三级区间段时,上述目标进制为十六进制,模运算为模十六运算。
其中,第一级区间段对应的第一间隔天数的范围是大于或等于0且小于或等于32768天,第二级区间段对应的第一间隔天数的范围是大于32768天且小于65536天,第三级区间段对应的第一间隔天数的范围是大于或等于65536天且小于1048576天。
一种较佳的实施方式,在本发明实施例1中提出,出生日期脱敏算法的主要过程描述如下:
1)检查待脱敏的出生日期(oridate)、基准日期(refdate)和干扰值(key)的合法性,该合法性指出生日期早于基准日期,基准日期不晚于当天日期,key的值为大于或等于0的整数。
2)计算待脱敏的出生日期与基准日期的间隔天数,并记为第一间隔天数(nintervalday),nitervalday=refdate-oridate,显然nintervalday的值大于等于0。
3)设置区间标志为nflag=nintervalday÷32768,nflag取整数部分。
当nflag=0时,则第一间隔天数大于或等于0天且小于32768天,将待脱敏的出生日期所属的第一区间段记为第一级区间段;
当nflag=1时,则第一间隔天数大于或等于32768天且小于65536天,将待脱敏的出生日期所属的第一区间段记为第二级区间段;
当1 4)如果nflag等于0或者1时,执行以下步骤: 4.1)计算第二间隔天数nintervalday’ nintervalday’=nintervalday-32768×nflag,即第二间隔天数取的是第一间隔天数减去第一区间段之前的各级区间段的区间长度之后的数,特别的,当nflag=0时,即待脱敏出生日期所属的第一区间段为第一级区间内时,第二间隔天数等于第一间隔天数。 比如,第一间隔天数为36000天时,则nflag=1,则第二间隔天数为3232天;当第一间隔天数为30000天时,则nflag=0,则第二间隔天数也为30000天。 4.2)将nintervalday’和key转化为目标进制数,此处以八进制数进行说明,分别用d1d2d3d4d5、k1k2k3k4k5表示,用di表示d1~d5,用ki表示k1~k5,(1≤i≤5)。其中选取八进制,是因为32768恰好为215,其换成八进制为100000,小于这个数的八进制数最大即为77777,恰好是五位八进制数,其中d1d2d3d4d5和k1k2k3k4k5表示小于五位八进制数77777的五位八进制数,当位数不够五位时,在高位前补0。当干扰值key的取值大于五位的八进制数时,从低位至高位依次取前五位八进制数,将超过第五位的数剔除,比如当key的值为六位八进制数123456,则将key的值记为23456。下面将进行脱敏后的出生日期相对于基准日期的天数偏移量的计算过程: 4.3)按照以下规则逐位进行目标进制运算,其中进行模八运算,是为了使根据八进制数计算得到的数还是八进制数: 具体过程为:将该第二间隔天数对应的数值在八进制下的每一位上的值,与干扰值在该八进制下的相应位上的值进行和运算。 将该和运算后的值与八进制对应的进制数进行模mod运算,得到天数偏移量在相应位上的值,具体运算过程如下: 4.3.1)计算r5=(d5+k5)mod8,mod8表示模八运算; 4.3.2)计算r4=(((d4+k4)mod8)+r5)mod8; 4.3.3)计算r3=(((d3+k3)mod8)+r4)mod8; 4.3.4)计算r2=(((d2+k2)mod8)+r3)mod8; 4.3.5)计算r1=(((d1+k1)mod8)+r2)mod8。 将该和运算后的值与八进制对应的进制数进行模mod运算,得到天数偏移量在相应位上的值,r1r2r3r4r5,为了便于后续计算,将该八进制数通过以下公式换算成十进制数,用nres表示,nres=r1×84+r2×83+r3×82+r4×8+r5 根据下式计算脱敏后的出生日期相对于基准日期的天数偏移量: nresday=nres+32768×nflag。 5)当1 5.1)令nflag=2,nintervalday’=nintervalday-32768×2; 5.2)将nintervalday’和干扰值key转换为十六进制数,因为32768×32=220,比该数小的数都小于最大的五位十六进制数;用dx1dx2dx3dx4dx5、k1k2k3k4k5表示第二间隔天数和干扰值,其中dxi和ki(1≤i≤5),满足0x0≤dxi≤0xf和0x0≤ki≤0xf,其中dx1dx2dx3dx4dx5和k1k2k3k4k5表示小于五位十六进制数fffff的五位十六进制数,当位数不够五位时,在高位前进行补0,当干扰值key的取值大于五位的十六进制数时,从低位至高位依次取前五位十六进制数,将超过第五位的数剔除,比如当key的值为六位十六进制数123456,则将key的值记为23456。 5.3)按照以下规则逐位进行模十六运算: 5.3.1)计算r5=(d5+k5)mod16,mod16表示模十六运算; 5.3.2)计算r4=(((d4+k4)mod16)+r5)mod16; 5.3.3)计算r3=(((d3+k3)mod16)+r4)mod16; 5.3.4)计算r2=(((d2+k2)mod16)+r3)mod16; 5.3.5)计算r1=(((d1+k1)mod16)+r2)mod16。 5.3.6)将上述各个结果合并计算得到: nres=r1×164+r2×163+r3×162+r4×16+r5 nresday=nres+32768×2 6)特别的当nflag>31时,令nresday=nintervalday,即当第一间隔天数大于1015715天时(1015715为31倍的32768天),则对该待脱敏出生日期不进行变换,直接将该待脱敏的出生日期记为脱敏后的出生日期作为脱敏结果。 7)根据得到的脱敏后的出生日期相对于基准日期的天数偏移量nresday,根据以下公式得到脱敏后的出生日期resdate: resdate=refdate-nresday,及从基准日期往前数nresday天,得到脱敏后的出生日期。 在获得脱敏后的出生日期后,还可以将脱敏后的出生日期还原成脱敏前的出生日期,其方法流程图见图3,具体步骤如下所示: s300,获取脱敏后的出生日期和基准日期,基准日期晚于脱敏后的出生日期。 该脱敏日期与脱敏过程中的基准日期应保持一致,即该基准日期同样晚于脱敏后的出生日期,且早于或等于当前日期。 s310,根据脱敏后的出生日期与基准日期之间的第三间隔天数,从预存的多级区间段中,确定脱敏后的出生日期所属的第二区间段。 其中第三间隔天数在此代表脱敏后的出生日期与基准日期之间的差值,第二区间段仅仅是泛指该脱敏后的出生日期所在的区间,并不是具体哪个区间。 s320,按照预设的还原算法,确定该脱敏后的出生日期在所属的第二区间段中对应的脱敏前的出生日期。 在步骤s320中,具体确定步骤包括如下,其流程图如图4所示: s400,按照预设的还原算法,确定在该脱敏后的出生日期所属的第二区间段中,脱敏前的出生日期相对基准日期的天数偏移量。 s410,根据基准日期,以及脱敏前的出生日期相对基准日期的天数偏移量,确定脱敏前的出生日期。 其中天数偏移量,是指脱敏前的出生日期早于基准日期的具体天数。确定该具体天数的方法如下: (1)根据第三间隔天数、和在第二区间段之前的区间段的区间长度,确定第四间隔天数;其中,第四间隔天数为第三间隔天数减去在第二区间段之前的各级区间段的区间长度之后的数;在第二区间段之前的区间段是指对应的间隔天数小于第三间隔天数的区间段。 (2)根据第四间隔天数和选择的一个干扰值,生成脱敏前的出生日期相对基准日期的天数偏移量;其中,这一个干扰值为大于或等于0的整数。 对每一个脱敏后的出生日期进行还原时,干扰值与得到该脱敏后的出生日期的脱敏过程中的干扰值是同一个值,比如,待脱敏的出生日期a在脱敏后变为日期b,在此过程中,干扰值为c,则在日期b还原为出生日期a的过程中,干扰值也为c。或者,同一批次对一组待脱敏的出生日期进行脱敏处理得到对应的一组脱敏后的出生日期,在此过程中的干扰值为a,则在对这一组脱敏后的出生日期进行还原时,选用的干扰值也应该为a。 在第(2)步中,具体包括: 将第四间隔天数对应的数值在目标进制下的每一位上的值,与该干扰值在该目标进制下的相应位上的值进行差运算; 将差运算后的值与目标进制对应的进制数进行摸mod运算,得到天数偏移量在相应位上的值; 将得到的天数偏移量在目标进制下的各个位上的值进行整合后,加上在第二区间段之前的各级区间段的区间长度,得到目标进制下的天数偏移量对应的数值。 当脱敏后的出生日期所属的第二区间段是多级区间段的第一级区间段或第二级区间段时,上述目标进制为八进制,模运算为模八运算。 当脱敏后的出生日期所属的第二区间段是多级区间段的第三级区间段时,上述目标进制为十六进制,模运算为模十六运算。 其中,第一级区间段对应的第三间隔天数的范围是大于或等于0且小于32768天,第二级区间段对应的第三间隔天数的范围是大于或等于32768天且小于65536天,第三级区间段对应的第三间隔天数的范围是大于或等于65536天且小于1048576天。 一种较佳的实施方式,在本发明实施例1中提出,出生日期脱还原法的主要过程描述如下 1)检查脱敏后的出生日期(resdate)、基准日期(refdate)和干扰值(key)的合法性,该合法性指该已出生日期早于基准日期,基准日期不晚于当天日期,key的值为大于或等于0的整数。 2)计算脱后敏的出生日期与基准日期的间隔天数,并记为第三间隔天数(nintervalday),nitervalday=refdate-oridate,显然nintervalday的值大于等于0。 当nflag=0时,则第三间隔天数大于或等于0天且小于32768天,将脱敏后的出生日期所属的第二区间段记为第一级区间段; 当nflag=1时,则第三隔天数大于或等于32768天且小于65536天,将脱敏后的出生日期所属的第二区间段记为第二个区间; 当1 4.1)计算第四间隔天数nintervalday’ nintervalday’=nintervalday-32768×nflag,即第四间隔天数取的是第三间隔天数减去第二区间段之前的各级区间段的区间长度之后的数,特别的,当nflag=0时,即脱敏后出生日期所属的第三区间在第一个区间内时,第四间隔天数等于第三间隔天数。 比如,第三间隔天数为36000天时,则nflag=1,则第四间隔天数为3232天;当第三间隔天数为30000天时,则nflag=0,则第三间隔天数也为30000天。 4.2)将nintervalday’和key转化为目标进制数,此处以八进制数进行说明,分别用r1r2r3r4r5、k1k2k3k4k5表示,用ri表示r1~r5,用ki表示k1~k5,(1≤i≤5),其中选取八进制,是因为32768恰好为215,其换成八进制为100000,小于这个数的八进制数最大即为77777,恰好是五位八进制数,其中r1r2r3r4r5和k1k2k3k4k5表示小于八进制数77777的五位八进制数,当位数不够五位时,在高位前补0,当干扰值key的取值大于五位的八进制数时,从低位至高位依次取前五位八进制数,将超过第五位的数剔除,比如当key的值为六位八进制数123456,则将key的值记为23456。下面将进行脱敏前的出生日期相对于基准日期的天数偏移量的计算过程: 具体过程为:将该第四间隔天数对应的数值在八进制下的每一位上的值,与干扰值在该八进制下的相应位上的值进行差运算。 将该差运算后的值与八进制对应的进制数进行模mod运算,得到天数偏移量在相应位上的值,具体运算过程如下: 4.3.1)计算d5=(r5-k5)mod8,mod8表示模八运算; 4.3.2)计算d4=(((r4-r5)mod8)-k4)mod8; 4.3.3)计算d3=(((r3-r4)mod8)-k3)mod8; 4.3.4)计算d2=(((r2-r3)mod8)-k2)mod8; 4.3.5)计算d1=(((r1-r2)mod8)-k1)mod8。 将该差运算后的值与八进制对应的进制数进行模mod运算,得到天数偏移量在相应位上的值,d1d2d3d4d5,为了便于后续计算,将该八进制数通过以下公式换算成十进制数,用nint表示,nint=d1×84+d2×83+d3×82+d4×8+d5; 根据下式计算脱敏前的出生日期相对于基准日期的天数偏移量: nnewintday=nint+32768×nflag。 5)当1 5.2)将nintervalday’和(key×0x1f)转换为十六进制数,因为32768×32=220,比该数小的数都小于最大的五位十六进制数;用rx1rx2rx3rx4rx5、k1k2k3k4k5表示第四间隔天数和干扰值,其中rxi和ki(1≤i≤5),满足0x0≤rxi≤0xf和0x0≤ki≤0xf,其中rx1rx2rx3rx4rx5和k1k2k3k4k5表示小于五位十六进制数fffff的五位十六进制数,当位数不够时,在高位前补0,当干扰值key的取值大于五位的八进制数时,从低位至高位依次取前五位八进制数,将超过第五位的数剔除,比如当key的值为六位八进制数123456,则将key的值记为23456。 5.3.1)计算d5=(rx5-k5)mod16,mod16表示模十六运算; 5.3.2)计算d4=(((rx4-rx5)mod16)-k4)mod16; 5.3.3)计算d3=(((rx3-rx4)mod16)-k3)mod16; 5.3.4)计算d2=(((rx2-rx3)mod16)-k2)mod16; 5.3.5)计算d1=(((rx1-rx2)mod16)-k1)mod16。 nint=d1×164+d2×163+d3×162+d4×16+d5 nnewintday=nint+32768×2 6)特别的当nflag>31时,令nnewintday=nintervalday,即当第一间隔天数大于1015808天(1015808天为31倍的32768天)时,则对该脱敏后出生日期不进行还原变换,直接将该脱敏后出生日期记为脱敏前的出生日期,并作为还原结果。 7)根据得到的脱敏前的出生日期相对于基准日期的天数偏移量nnewintday,根据以下公式得到脱敏前的出生日期oridate: oridate=refdate-nnewintday,及从基准日期往前数nnewintday天,得到脱敏前的出生日期。 以下是上述出生日期的脱敏过程和还原过程中涉及到的模八运算的可逆证明: 输入:脱敏算法中nintervalday和key,分别用d1d2d3d4d5、k1k2k3k4k5表示,其中di和ki(1≤i≤5)表示各个数位上的数字,满足0≤di≤7和0≤ki≤7(为八进制数); 输出:nres nres用八进制数r1r2r3r4r5表示,其中ri(1≤i≤5)表示各个数位上的数字,满足0≤ri≤7和0≤ki≤7 根据出生日期脱敏算法4.3)计算过程均采用八进制运算: 可以总结为(均采用八进制数运算): 而在出生日期还原算法4.3)中,有: 同样可以总结为: 当i=5时, d5=(r5-k5)mod8 和当0 di=(((ri-ri+1)mod8)-ki)mod8 =(ri-ri+1-ki)mod8(**) 将(**)式代入(*)式,则有: 因为0≤di≤7,所以(***)式证明了该算法是可逆的。 出生日期的脱敏过程和还原过程中涉及到的模十六运算的可逆证明也可以根据上述方法得到,在此不再赘述。 下面以一实时例,具体阐述脱敏一个出生日期的方法: 1)获取待脱敏的出生日期2000.04.01日,基准日期2017.04.01日。 2)根据待脱敏的出生日期和基准日期之间的第一间隔天数6209天,因为6209<32767,确定该待脱敏的出生日期所属的区间段为第一个区间,第二间隔天数等于第一间隔天数6209天,将6209换成八进制数为14101,该第二间隔天数为一个五位八进制数,任取一个五位八进制的干扰值52733,然后按照以下公式计算天数偏移量对应的数值r1r2r3r4r5的每一位值: r5=(1+3)mod8=4; r4=(((0+3)mod8)+4)mod8=7; r3=(((1+7)mod8)+7)mod8=7; r2=(((4+2)mod8)+7)mod8=5; r1=(((1+5)mod8)+5)mod8=3。 3)将得到的r1r2r3r4r5=35774转换成十进制数: nres=3×84+5×83+7×82+7×8+4=15356;则脱敏后的出生日期相对于基准日期的天数偏移量nresday为15356+0=15356天。 4)脱敏后的出生日期resdate等于从2017.04.01开始往前数15356天,得到脱敏后的出生日期为1975年3月17日。 下面是对上述脱敏后的出生日期进行还原得到脱敏前的出生日期的具体方法: 1)获取脱敏后的出生日期1975.03.17日,基准日期2017.04.01日。 2)根据脱敏后的出生日期与基准日期之间的第一间隔天数15356天,因为15356<32767,确定该脱敏后的,出生日期所属的区间段为第一个区间,第二间隔天数等于第一间隔天数15356,将15356换成八进制数为35774,该第二间隔天数为一个五位八进制数,取脱敏过程中的干扰值52733,然后按照以下公式计算天数偏移量对应的数值r1r2r3r4r5的每一位值: d5=(4-3)mod8=1; d4=(((7-4)mod8)-3)mod8=0; d3=(((7-7)mod8)-7)mod8=1; d2=(((5-7)mod8)-2)mod8=4; d1=(((3-5)mod8)-5)mod8=1; 3)将得到的d1d2d3d4d5=14101转换成十进制数: nres=1×84+4×83+1×82+0×8+1=6209;则脱敏前的出生日期相对于基准日期的天数偏移量nresday为6209+0=6209天。 4)脱敏前的出生日期resdate等于从2017.04.01开始往前数6209天,得到还原后的出生日期为2000年4月1日。 实施例2 本发明实施例2提供了一种出生日期数据的脱敏装置,如图5所示,包括:获取模块500,执行模块501和确定模块502。 其中,获取模块500,用于获取待脱敏的出生日期和基准日期,该基准日期晚于待脱敏日期、且早于或等于当前日期。 执行模块501,用于根据待脱敏的出生日期与基准日期之间的第一间隔天数,从预存的多级区间段中,确定待脱敏的出生日期所属的第一区间段,其中,不同的区间段对应不同的年龄范围,同一区间段对应相同的年龄范围。 确定模块502,按照预设的脱敏算法,确定该待脱敏的出生日期在所属的第一区间段中对应的脱敏后的出生日期。 其中,确定模块502,具体用于按照预设的脱敏算法,确定在该待脱敏的出生日期所属的第一区间段中,脱敏后的出生日期相对基准日期的天数偏移量。根据基准日期,以及脱敏后的出生日期相对基准日期的天数偏移量,确定脱敏后的出生日期。 确定模块502,具体用于任取一个干扰值,所述干扰值为大于或等于0的任意整数;以及根据第一间隔天数、和在第一区间段之前的区间段的区间长度,确定第二间隔天数;其中,第二间隔天数为第一间隔天数减去第一区间段之前的各级区间段的区间长度之后的数;在第一区间段之前的区间段是指对应的区间天数小于第一间隔天数的区间段;根据第二间隔天数和上述干扰值,生成脱敏后的出生日期相对基准日期的天数偏移量。 确定模块502,具体用于将第二间隔天数对应的数值在目标进制下的每一位上的值,与干扰值在该目标进制下的相应位上的值进行和运算;将和运算后的值与目标进制对应的进制数进行模运算,得到天数偏移量在相应位上的值;将得到的天数便宜量在目标进制下的各个位上的值进行整合后,加上在第一区间段之前的各级区间段的区间长度,得到目标进制下的天数偏移量对应的数值。 其中,确定模块502将根据以下规定对目标进制和模运算进行限定: 其中,确定模块502执行脱敏算法的过程,详见实施例1中提到的脱敏算法的过程,在此不再赘述。 获取模块500,还用于获取脱敏后的出生日期和基准日期。 执行模块501,还用于根据脱敏后的出生日期与基准日期之间的第三间隔天数,从预存的多级区间段中,确定脱敏后的出生日期所属的第三区间长度。 确定模块502,按照预设的还原算法,确定该脱敏后的出生日期在所属的第二区间段中对应的脱敏前的出生日期。 确定模块502,具体用于按照预设的还原算法,确定在该脱敏后的出生日期所属的第二区间段中,脱敏前的出生日期相对基准日的天数便宜量;根据基准日期,以及脱敏前的出生日期相对基准日期的天数偏移量,确定脱敏前的出生日期。 确定模块502,具体用于根据第三间隔天数、和在第二区间段之前的区间段的区间长度,确定第四间隔天数;其中,第四间隔天数为第三间隔天数减去在第三区间之前的区间段是指对应的间隔天数小于第三间隔天数的区间段;根据第四间隔天数和选择的一个干扰值,生成脱敏前的出生日期相对基准日期的天数偏移量;其中,上述一个干扰值为大于或等于0的整数。 确定模块502,具体用于将第四间隔天数对应的数值在目标进制下的每一位上的值,与干扰值在该目标进制下的相应位上的值进行差运算;将差运算后的值与目标进制对应的进制数进行摸mod运算,得到天数偏移量在相应位上的值;将得到的天数偏移量在目标进制下的各个位上的值进行整合后,加上在第二区间段之前的各级区间段的区间长度,得到目标进制下的天数偏移量对应的数值。 确定模块502对每一个脱敏后的出生日期进行还原时,干扰值与得到该脱敏后的出生日期的脱敏过程中的干扰值是同一个值,比如,待脱敏的出生日期a在脱敏后变为日期b,在此过程中,干扰值为c,则在日期b还原为出生日期a的过程中,干扰值也为c。或者,同一批次对一组待脱敏的出生日期进行脱敏处理得到对应的一组脱敏后的出生日期,在此过程中的干扰值为a,则在对这一组脱敏后的出生日期进行还原时,选用的干扰值也应该为a。 其中,确定模块502执行还原算法的过程,详见实施例1中提到的还原算法的过程,在此不再赘述。 实施例3 本发明实施例3提供了一种出生日期数据的脱敏方法,其流程图见图6所示,具体步骤如下: s600,第一设备接收第二设备发送的待脱敏的出生日期集合和基准日期,该待脱敏的出生日期集合中包含多个待脱敏的出生日期,基准日期晚于各个待脱敏的出生日期,且早于或等于当前日期。 其中第一设备和第二设备为计算机、平板或者其他智能设备。 s610,根据每一个待脱敏的出生日期与基准日期之间的第一间隔天数,从预存的多级区间段中,确定该待脱敏的出生日期所属的第一区间段,按照预设的脱敏算法,确定该待脱敏的出生日期在所属的第一区间段中对应的脱敏后的出生日期。 s620,将待脱敏的出生日期集合中的每一个待脱敏的出生日期对应的脱敏后的出生日期发送给所述第二设备。 在步骤s610中,具体包括以下步骤: 按照预设的脱敏算法,确定在该待脱敏的出生日期所属的第一区间段中,脱敏后的出生日期相对基准日期的天数偏移量。 根据基准日期,以及脱敏后的出生日期相对基准日期的天数偏移量,确定脱敏后的出生日期。 其中,确定该天数偏移量,包括: (1)任取一个干扰值,该干扰值为大于或等于0的任意整数。 (2)根据第一间隔天数、和在第一区间段之前的区间段的区间长度,确定第二间隔天数;其中,第二间隔天数为第一间隔天数减去在第一区间段之前的各级区间段的区间长度之后的数;在第一区间段之前的区间段是指对应的间隔天数小于第一间隔天数的区间段; (3)根据第二间隔天数和选择的干扰值,生成脱敏后的出生日期相对基准日期的天数偏移量。 在步骤(3)中,具体包括: 将第二间隔天数对应的数值在目标进制下的每一位上的值,与干扰值在该目标进制下的相应位上的值进行和运算。 将和运算后的值与目标进制对应的进制数进行模mod运算,得到天数偏移量在相应位上的值。 其中,具体执行脱敏算法的过程,详见实施例1中提到的脱敏算法的过程,在此不再赘述。 对待脱敏的出生日期进行脱敏后,还包括对脱敏后的出生日期进行还原,其流程图如图7所示,具体步骤如下: s700,第一设备接收第二设备发送的脱敏后的出生日期集合和基准日期,该脱敏后的出生日期集合中包含多个脱敏后的出生日期,基准日期晚于各个脱敏后的出生日期、且早于或等于当前日期。 s710,根据每一个脱敏后的出生日期与基准日期之间的第三间隔天数,从预存的多级区间段中,确定该脱敏后的出生日期所属的第二区间段,按照预设的还原算法,确定该脱敏后的出生日期在所属的第二区间段中对应的脱敏前的出生日期。 s720,将脱敏后的出生日期集合中的每一个脱敏后的出生日期对应的脱敏前的出生日期发送给第二设备。 在步骤s710中,具体包括以下步骤: 按照预设的还原算法,确定在该脱敏后的出生日期所属的第二区间段中,脱敏前的出生日期相对基准日期的天数偏移量; 根据基准日期,以及脱敏前的出生日期相对基准日期的天数偏移量,确定脱敏前的出生日期。 (1)根据第三间隔天数、和在第二区间段之前的区间段的区间长度,确定第四间隔天数;其中,第四间隔天数为第三间隔天数减去在第二区间段之前的各级区间段的区间长度之后的数;在第二区间段之前的区间段是指对应的间隔天数小于所述第三间隔天数的区间段; (2)根据第四间隔天数和选择的一个干扰值,生成脱敏前的出生日期相对所述基准日期的天数偏移量;其中,上述一个干扰值为大于或等于0的整数。 在步骤(2)中,具体包括: 将第四间隔天数对应的数值在目标进制下的每一位上的值,与干扰值在该目标进制下的相应位上的值进行差运算; 将差运算后的值与目标进制对应的进制数进行摸mod运算,得到天数偏移量在所述相应位上的值; 将得到的天数偏移量在所述目标进制下的各个位上的值进行整合后,加上在第二区间段之前的各级区间段的区间长度,得到目标进制下的天数偏移量对应的数值。 其中,具体执行还原算法的过程,详见实施例1中提到的还原算法的过程,在此不再赘述。 本发明实施例所提供的进行出生日期数据的脱敏方法及装置的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。 本发明实施例所提供的出生日期的脱敏的装置可以为设备上的特定硬件或者安装于设备上的软件或固件等。本发明实施例所提供的装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,前述描述的系统、装置和单元的具体工作过程,均可以参考上述方法实施例中的对应过程,在此不再赘述。 在本发明所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。 另外,在本发明提供的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。 所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。 应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释,此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。 最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围。都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。