
1.本发明涉及信息安全技术领域,具体涉及一种基于随机序列的脱敏方法及相关设备。
背景技术:2.随着大数据时代信息技术的高速发展,企业在运营中需要用到大量的数据,特别是在研发业务应用系统软件时,经常需要用到大量的、真实的、完整的业务进行测试。研发应用系统软件通常直接采用真实数据进行测试。这就很容易造成敏感数据的泄露。现今随着数据安全的要求越来越高,常采用模拟数据进行测试。但模拟数据与真实数据有很大差距,测试结果很难达到预期的效果。因此我们需要对数据脱敏,来进行业务系统的测试。数据脱敏处理是指对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护。
3.常用的数据脱敏方法如替换、偏移、遮蔽等方法无法同时确保数据脱敏前后的唯一性,导致脱敏数据的应用价值大大降低。这样的脱敏数据对于系统测试来说存在不稳定性。因此,亟需一种既能保持数据安全,又能保持数据唯一性的脱敏方法。
技术实现要素:4.本发明提供了一种基于随机序列的数据脱敏方法及相关设备,解决了现有技术中对数据脱敏后无法保持数据脱敏结果唯一性的问题。
5.一种基于随机序列的脱敏方法,包括:
6.获取待脱敏字符串;
7.构建字符集,字符集包含所述待脱敏字符串的所有字符,所述字符集中的每一个字符都有一个对应的序号,且,字符和序号都是唯一的;
8.根据字符集对待脱敏字符串数据进行映射,将其每个位置上的字符替换成字符集中对应的序号值,得到映射结果;
9.将所述映射结果与预设的随机序列进行取余运算,得到脱敏数组,所述预设的随机序列通过预设的随机种子生成,且,长度不小于所述待脱敏字符串的长度;
10.将所述脱敏数组与字符集进行映射,将脱敏数组中序号与字符集序号进行一一对应,得到所述待脱敏字符串对应的脱敏结果。
11.可选的,所述获取待脱敏字符串包括:
12.所述待脱敏字符串中的对象包括字母、数字、运算符号、中文、标点符号和功能性符号中任意一种或几种的组合。
13.可选的,所述将所述映射结果与预设的随机序列进行取余运算,得到脱敏数组的过程包括:
14.将所述映射结果中的每一个值与随机序列中对应位置的值相加,然后与字符集长度进行取余运算,将所述取余运算的结果组成脱敏数组;
15.其中运算规则为:
16.si=mod(ci+pi,n)
17.其中,mod为取余函数,si为字符数组中第i个字符在字符集中对应的脱敏序号,ci为字符数组中字符在字符集中对应的值,pi为随机序列第i个位置上的随机值,n为字符集的长度。
18.一种基于随机序列的脱敏装置,包括:
19.待脱敏字符串获取模块,用于获取待脱敏字符串;
20.字符集构建模块,用于构建字符集,字符集包含所述待脱敏字符串的所有字符,所述字符集中的每一个字符都有一个对应的序号,且,字符和序号都是唯一的;
21.映射模块,用于根据字符集对待脱敏字符串数据进行映射,将其每个位置上的字符替换成字符集中对应的序号值,得到映射结果;
22.运算模块,用于将所述映射结果与预设的随机序列进行取余运算,得到脱敏数组,所述预设的随即序列通过预设的随机种子生成,且,长度不小于所述待脱敏字符串的长度;
23.脱敏结果生成模块,用于将所述脱敏数组与字符集进行映射,将脱敏数组中序号与字符集序号进行一一对应,得到所述待脱敏字符串对应的脱敏结果。
24.可选的,所述运算模块包括:
25.相加单元,用于将所述映射结果中的每一个值与随机序列中对应位置的值相加;
26.取余单元,用于将所述相加模块的结果与字符集长度进行取余运算,将所述取余运算的结果组成脱敏数组。
27.一种计算设备,包括:
28.至少一个处理器,以及与所述至少一个处理器通信连接的存储器,其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器执行权利要求任一所述的基于随机序列的脱敏方法。
29.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使所述计算机执行权利要任一所述的随机序列的脱敏方法。
30.综上所述,本发明公开了一种基于随机序列的脱敏方法,利用预先设置的随机种子,生成随机序列,通过与字符集的多次映射和取余,可以唯一确定待脱敏字符串脱敏后得到的脱敏结果,避免了传统脱敏方法中,脱敏数据无法保持唯一的缺点,而且大大提高了待脱敏字符串数据的安全性。
附图说明
31.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
32.图1为本发明公开的一种基于随机序列脱敏方法的流程图;
33.图2为本发明公开的一种脱敏装置的结构示意图;
34.图3为本发明公开的脱敏装置中的运算结构的示意图。
具体实施方式
35.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
36.如图1所示,为本发明公开的一种基于随机序列的脱敏方法的实施例1的方法的流程图,方法可以包括以下步骤:
37.s101、获取待脱敏字符串。
38.本发明实施例公开的脱敏方法针对的待脱敏的字符串通常存储于数据中,其中,字符是字符串字段的基本数据单位,字符长度可变,每个字符都应该在字符集中存在,在字符集中有对应的序号。
39.假设本实施例中读取的是一个长度为l的待脱敏字符串数据a={a1,a2lailaj},其中ai该字符串a第i个位置上的字符。
40.s102、构建字符集。
41.本步骤中构建的字符集包含所述待脱敏字符串的所有字符,所述字符集中的每一个字符都有一个对应的序号,且,字符和序号都是唯一的。
42.其中,字符集是涵盖字符串字段可能的所有字符,其大小为n,包含序号(从0开始计数)和字符两个属性,字符串字段的字符在字符集出现且仅出现一次,所有可能的字符都应该能在字符集中找到对应的序号。
43.s103、根据字符集对待脱敏字符串数据进行映射。
44.根据字符集对待脱敏字符串数据进行映射,将其每个位置上的字符替换成字符集中对应的序号值,得到c={c1,c2lcilcj},其中ci为字符ai在字符集c中对应的序号,得到映射结果。
45.s104、将所述映射结果与预设的随机序列进行取余运算,得到脱敏数组。
46.预设的随机序列通过预设的随机种子生成,且,长度不小于所述待脱敏字符串的长度。其中,随机种子是用于产生随机序列的配置值,非负整数;字符串长度是指字符串中字符的个数。
47.根据脱敏字段规定的最大长度l,给定一个预设的随机种子初始化一个不小于该脱敏字段最大长度的非负整数随机序列p={p1,p2lpilpn},长度为l
p
,其中pi为该随机序列第i个位置上的随机值,l≤l
p
。
48.在本步骤中,选择随机序列与映射结果进行取余运算得到脱敏数组s={s1,s2lsilsj}。
49.本步骤中,利用随机序列进行取余运算,能够增加脱敏结果的随机性。
50.s105、将所述脱敏数组与字符集进行映射,得到脱敏结果。
51.将所述脱敏数组与字符集进行映射,将脱敏数组中序号与字符集序号进行一一对应,并按待脱敏字符串数据中字符顺序组装,得到所述待脱敏字符串对应的脱敏结果。
52.获取的待脱敏字符串数据可以是字母、数字、运算符号、中文、标点符号和其他符号,以及一些功能性符号,任意一种或几种的组合。
53.假设获取的待脱敏字符串数据为数字,首先构建字符集,字符集中包含了所述待
脱敏数字的所有字符,且所述字符集中的每一个字符都有唯一对应的序号;字符集构建完成后,根据字符集对待脱敏的数字进行映射,将字符串上面的每一个数字都替换成字符集中相应字符对应的序号,得到映射结果。将映射结果与预设的随机序列进行计算,得到脱敏数组,所述脱敏数组与字符集进行映射,得到所述脱敏结果。
54.以上只是以数字为例,对脱敏过程进行了描述和说明,并不限定待脱敏字符串数据为数字,其他类型的待脱敏字符串数据基于随机序列得到脱敏的过程可以参考此流程,在此不再赘述。
55.在上述实施例公开的基于随机序列的脱敏方法中,在需要对获取的字符串进行脱敏时,首先需要构建字符集,字符集中包含了所述待脱敏字符串的所有字符,且,所述字符集中的每一个字符都有唯一对应的序号;字符集构建完成后,根据字符集对待脱敏的字符串进行映射,将字符串的上面的每一个字符都替换成字符集中相应的字符对应的序号,得到映射后的结果;将映射结果与预设的随机序列进行运算,其中预设的随机序列可在此步骤之前任意步骤生成,运算过程是通过取余运算,得到脱敏数组,所述预设的随机序列通过预设的随机种子生成,且,长度不小于所述待脱敏字符串长度;最后将所述脱敏数组与字符集进行映射,将脱敏数组中序号与字符集序号一一对应,得到所述脱敏字符串对应的脱敏结果。
56.本发明利用随机序列对字符串进行脱敏,与传统的脱敏方法相对比,可以唯一确定待脱敏字符串,避免了传统脱敏方法中,数据脱敏前后唯一后悬置数量或者数据量无法保持唯一的缺点,而且大大提高了待脱敏字符串数据的安全性。
57.在上一实施例中,将所述映射结果与预设的随机序列进行取余运算,得到脱敏数组的过程包括:
58.将所述映射结果中的每一个值与随机序列中对应位置的值相加,然后与字符集长度进行取余运算,将所述取余运算的结果组成脱敏数组;
59.其中运算规则为:
[0060][0061]
其中,mod为取余函数,si为字符数组中第i个字符在字符集中对应的脱敏序号,ci为字符数组中字符在字符集中对应的值,pi为随机序列第i个位置上的随机值,n为字符集的长度。
[0062]
也就是说,在本实施例中,通过取余运算确定字符数组中每个字符对应的脱敏序号,然后构建出脱敏数组。
[0063]
将随机序列与上述方式的取余运算相结合的方案中,能够进一步的提升数据的唯一性。
[0064]
假设获取的字符串a与获取的字符串b的值完全相等,则字符串a的第i个字符ai必然与字符串b的第i个字符bi相等,则字符串a的第i个字符在字符集中对应的序号aci必然与字符串b的第i个字符在字符集中对应的序号bci相等,而随机序列中第i个位置的随机值pi是一个固定值,代入到计算公式可得:
[0065]
asi=mod(aci+pi,n)
[0066]
=mod(bci+pi,n)
[0067]
=bsiꢀꢀꢀ
(公式2)
[0068]
由此可以证明,脱敏后字符在字符集中对应的序号asi和bsi相等,所以脱敏后字符相等。也就是说,值完全相等字符串a与字符串b,按照上述方式进行脱敏的脱敏结果相等。
[0069]
假设字符串a与字符串b的值不完全相等,如果字符串a与字符串b长度不相同,那么脱敏结果的长度也必不相等,则取余预算中的模值不同,则脱敏结果必不相等。
[0070]
假设字符串a与字符串b的值不完全相等,字符串a与字符串b长度相同,则必有一个序号i,使得字符串a的第i个字符ai与字符串b的第i个字符bi不相等。由于字符集中字符是唯一的,因此则字符串a的第i个字符在字符集中对应的序号aci必然与字符串b的第i个字符在字符集中对应的序号bci不相等,因为aci和bci的值范围为[0,l-1],
[0071]
可知:mod(aci,n)和mod(bci,n)不相等,进而推出mod(aci+pi,n)和mod(bci+pi,n)不相等。即:
[0072]
mod(aci+pi,n)≠mod(bci+pi,n)
[0073]
asi≠bsiꢀꢀꢀ
(公式3)
[0074]
因此字符串a的第i个字符脱敏后字符与字符串b的第i个字符脱敏后字符不相等,进而可知字符串a的脱敏结果与字符串b的脱敏结果不相等。
[0075]
因此,可以看出,本方案中的脱敏方法,在待脱敏字符串值不完全相等的情况下,脱敏结果也相等。从而验证了本方案中脱敏数据的唯一性。
[0076]
综上所述:在相同随机种子条件下,用本方法进行字符串脱敏,值相同的字符串能够脱敏成相同的脱敏结果,值不同的字符串能够脱敏成不同的脱敏结果,满足脱敏结果唯一性,且脱敏前后数据量仍保持一致,满足完整性。
[0077]
接下来,以手机号码脱敏为例,将本方案进行举例说明。
[0078]
获取一个11位数字的手机号码为13855553451,根据所述所获取的手机号码可知,其由0-9组成,所以需要构建一个字符集,字符集由0-9组成,其大小为10。字符集包含了所述待脱敏手机号码中的所有字符,且字符集中的每一个字符都有唯一对应的序号。
[0079]
序号0123456789字符3504876921
[0080]
根据字符集对手机号进行分割,得到,
[0081]
a1a2a3a4a5a6a7a8a9a
10a11
13855553451
[0082]
根据字符集对待脱敏的手机号码进行映射,将手机号码上的每一个数字都替换成字符集中相应的字符对应序号,得到映射结果。
[0083]
c1c2c3c4c5c6c7c8c9c
10c11
90411110319
[0084]
通过预设的随机种子,生成一个随机序列,且随机序列的长度不小于所述待脱敏的手机号长度,其中预设的随机序列可在此步骤之前任意步骤生成。
[0085]
p1p2p3p4p5p6p7p8p9p
10
p
11
5840121131076
[0086]
将映射结果与预设的随机序列进行取余运算,si=mod(ci+pi,n),得到脱敏数组。
[0087][0088][0089]
将所述脱敏数组中序号与字符集中序号进行映射,最终得到所述手机号码所对应的脱敏结果82250404427。
[0090] s1s2s3s4s5s6s7s8s9s
10s11
序号48812323385结果82250404427
[0091]
本发明实施例还公开了一种基于随机序列的脱敏装置,其结构如图2所示,包括:
[0092]
待脱敏字符串获取模块201、用于获取待脱敏字符串;
[0093]
字符集构建模块202、用于构建字符集,字符集包含所述待脱敏字符串的所有字符,所述字符集中的每一个字符都有一个对应的序号,且,字符和序号都是唯一的;
[0094]
映射模块203、用于根据字符集对待脱敏字符串数据进行映射,将其每个位置上的字符替换成字符集中对应的序号值,得到映射结果;
[0095]
运算模块204、用于将所述映射结果与预设的随机序列进行运算,得到脱敏数组,所述预设的随机序列通过预设的随机种子生成,且,长度不小于所述待脱敏字符串的长度;
[0096]
脱敏结果生成模块205、用于将所述脱敏数组与字符集进行映射,将脱敏数组中的序号与字符集序号进行一一对应,得到所述待脱敏字符串对应的脱敏结果。
[0097]
在上述实施例公开的基于随机序列的脱敏方法中,在需要对获取的字符串进行脱敏时,首先需要构建字符集,字符集中包含了所述待脱敏字符串的所有字符,且,所述字符集中的每一个字符都有唯一对应的序号;字符集构建完成后,根据字符集对待脱敏的字符串进行映射,将字符串的上面的每一个字符都替换成字符集中相应的字符对应的序号,得到映射后的结果;将映射结果与预设的随机序列进行运算,其中预设的随机序列可在此步骤之前任意步骤生成,运算过程是通过取余运算,得到脱敏数组,所述预设的随机序列通过预设的随机种子生成,且,长度不小于所述待脱敏字符串额长度;最后将所述脱敏数组与字符集进行映射,将脱敏数组中序号与字符集序号一一对应,得到所述脱敏字符串对应的脱敏结果。本发明利用随机序列对字符串进行脱敏,与传统的脱敏方法相对比,可以唯一确定待脱敏字符串,避免了传统脱敏方法中,数据脱敏前后唯一后悬置数量或者数据量无法保持唯一的缺点,而且大大提高了待脱敏字符串数据的安全性。
[0098]
进一步的,图2示出了一种可能的实现方式中,运算模块204的具体结构如图3所示,包括:
[0099]
相加单元301、用于将所述映射结果中的每一个值与随机序列中对应未知的值相加;
[0100]
取余单元302,用于将所述相加模块的结果与字符集长度进行取余运算,将所述取余运算的结果组成脱敏数组。
[0101]
本实施例公开的一种基于随机序列的脱敏方法的具体工作流程图,可参考图1所示实施例,在此不再赘述。
[0102]
本发明另外公开一种计算机设备,该设备包括:
[0103]
至少一个处理器,以及与所述至少一个处理器通信连接的存储器,其中,所述存储器存储有被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器执行权利要求任一所述的基于随机序列的脱敏方法。
[0104]
本发明另外公开了有一种计算机可读存储介质,包括:
[0105]
所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使所述计算机执行权利要任一所述的随机序列的脱敏方法。
[0106]
本实施例公开的一种基于随机序列的脱敏方法,利用多次映射,随机序列与多次映射结果进行运算,最后得到脱敏结果,确保了脱敏结果的唯一性与安全性。
[0107]
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
[0108]
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
[0109]
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。
[0110]
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。