本发明涉及计算机,尤其涉及一种序列化处理方法和装置。
背景技术:
1、在计算机技术领域,一般使用redis、memcache等内存数据库作为分布式内存对象缓存系统,帮助数据库减轻负担,其底层数据的存储格式都是二进制,因此涉及到存储对象的序列化问题,现有技术一般使用jdk(java development kit,java开发包)自带的序列化方案。在实现本发明的过程中,发明人发现现有技术至少存在以下问题:第一,现有的序列化方式没有加密过程,外部人员可能从序列化结果中破解出原数据,导致数据泄露。第二,内存数据库一般对key(键)和value(值)的大小有一定限制,现有序列化方式的序列化结果可能会超出以上限制。
技术实现思路
1、有鉴于此,本发明实施例提供一种序列化处理方法和装置,能够通过加密序列化保证数据安全。
2、为实现上述目的,根据本发明的一个方面,提供了一种序列化处理方法。
3、本发明实施例的序列化处理方法包括:获取待处理数据的目标数据类型,利用至少一个标记字节来表示所述目标数据类型;根据预先确定的目标密钥确定至少一个密钥字节,对所述密钥字节执行隐私化处理,形成至少一个隐私化字节;所述标记字节、所述密钥字节和所述隐私化字节按照预设顺序排列为数据头;对所述待处理数据执行预置的、对应于所述目标数据类型的序列化逻辑以生成所述待处理数据对应的字节序列数据,将所述数据头和所述字节序列数据组合为所述待处理数据的序列化结果。
4、可选地,所述根据预先确定的目标密钥确定至少一个密钥字节,对所述密钥字节执行隐私化处理,形成至少一个隐私化字节,包括:从预置的密钥集合中选取所述目标密钥以确定所述密钥字节;对所述密钥字节执行哈希计算,将哈希计算结果中特定位置的字节确定为所述隐私化字节。
5、可选地,所述标记字节具有多个类型标记位,所述多个类型标记位与多个预设数据类型一一对应;以及,所述利用至少一个标记字节来表示所述目标数据类型,包括:将所述标记字节中所述目标数据类型对应的类型标记位的初始数更改为对立数,将所述标记字节按照预设移位策略移位。
6、可选地,所述预设数据类型包括:长整型;以及,所述对所述待处理数据执行预置的、对应于所述目标数据类型的序列化逻辑以生成所述待处理数据对应的字节序列数据,包括:在所述目标数据类型为长整型的情况下,将所述待处理数据的原码多次执行预设移动位数的无符号移动后与预设字节作逻辑运算,并将各逻辑运算结果合并为所述字节序列数据。
7、可选地,所述方法进一步包括:在所述将所述待处理数据的原码多次执行预设移动位数的无符号移动后与预设字节作逻辑运算之后,将所述逻辑运算结果中的高位连续零值删除。
8、可选地,所述预设数据类型进一步包括:字节型、字节数组型、短整型、整型、单精度浮点型、双精度浮点型、布尔型、日期型、字符串型和对象型;以及,所述对所述待处理数据执行预置的、对应于所述目标数据类型的序列化逻辑以生成所述待处理数据对应的字节序列数据,进一步包括:在所述目标数据类型为短整型、整型、单精度浮点型、双精度浮点型或日期型的情况下,将所述待处理数据转换为长整型进而生成所述字节序列数据;在所述目标数据类型为字节型、字节数组型或布尔型的情况下,将所述待处理数据直接转换为所述字节序列数据;在所述目标数据类型为字符串型或对象型的情况下,使用预置转换工具将所述待处理数据转换为所述字节序列数据。
9、可选地,所述标记字节具有压缩标记位;以及,所述方法进一步包括:在生成所述字节序列数据之后,若判断所述字节序列数据大于预设的压缩阈值,将所述字节序列数据压缩,将所述标记字节的压缩标记位的初始数更改为对立数。
10、可选地,所述方法进一步包括:接收待执行反序列化的字节数据,校验所述字节数据包含的字节数量是否等于预设数量、所述字节数据的第一预定位置字节是否为所述密钥字节、以及所述字节数据的第二预定位置字节是否为第一预定位置字节的隐私化处理结果中特定位置的字节;在校验通过的情况下,将所述字节数据的数据头中的标记字节按照预设移位策略的逆策略进行移位,从移位后的标记字节中确定类型标记位和压缩标记位;若该压缩标记位指示已执行压缩,则对所述字节数据中的字节序列数据执行解压缩;按照该类型标记位指示的数据类型对应的反序列化逻辑对所述字节数据中的字节序列数据执行转换。
11、为实现上述目的,根据本发明的另一方面,提供了一种序列化处理装置。
12、本发明实施例的序列化处理装置包括:类型标记单元,用于获取待处理数据的目标数据类型,利用至少一个标记字节来表示所述目标数据类型;隐私化处理单元,用于根据预先确定的目标密钥确定至少一个密钥字节,对所述密钥字节执行隐私化处理,形成至少一个隐私化字节;所述标记字节、所述密钥字节和所述隐私化字节按照预设顺序排列为数据头;字节组合单元,用于对所述待处理数据执行预置的、对应于所述目标数据类型的序列化逻辑以生成所述待处理数据对应的字节序列数据,将所述数据头和所述字节序列数据组合为所述待处理数据的序列化结果。
13、为实现上述目的,根据本发明的又一方面,提供了一种电子设备。
14、本发明的一种电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明所提供的序列化处理方法。
15、为实现上述目的,根据本发明的再一方面,提供了一种计算机可读存储介质。
16、本发明的一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明所提供的序列化处理方法。
17、根据本发明的技术方案,上述发明中的实施例具有如下优点或有益效果:
18、在执行序列化处理时,服务器利用标记字节来表示待处理数据的目标数据类型,根据预先确定的目标密钥确定密钥字节,对密钥字节执行隐私化处理以形成隐私化字节,并将标记字节、密钥字节和隐私化字节按照预设顺序排列为数据头,此后对待处理数据执行自定义的、对应于目标数据类型的序列化逻辑以生成待处理数据对应的字节序列数据,最后将数据头和字节序列数据组合为待处理数据的序列化结果。通过以上步骤,使用密钥字节和隐私化字节实现序列化结果的加密,外部无法直接对以上序列化结果通过现有的反序列化方式破解出原数据,使用本发明实施例的反序列化方法时则首先需要对密钥字节和隐私化字节执行校验,在不知晓以上密钥和加密方式的情况下无法通过校验,并且在不了解以上自定义序列化逻辑的情况下也无法执行具体数据的反序列化,由此保证序列化和反序列化过程中的数据安全。此外,标记字节的数据在形成之后可按照自定义的移位策略进行移位,进一步确保序列化结果不被破解;字节序列数据生成后可根据数据量大小决定是否执行压缩,由此避免较大的序列化结果生成,使序列化结果满足内存数据库对键值的大小限制。
19、上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
1.一种序列化处理方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述根据预先确定的目标密钥确定至少一个密钥字节,对所述密钥字节执行隐私化处理,形成至少一个隐私化字节,包括:
3.根据权利要求1所述的方法,其特征在于,所述标记字节具有多个类型标记位,所述多个类型标记位与多个预设数据类型一一对应;以及,所述利用至少一个标记字节来表示所述目标数据类型,包括:
4.根据权利要求3所述的方法,其特征在于,所述预设数据类型包括:长整型;以及,所述对所述待处理数据执行预置的、对应于所述目标数据类型的序列化逻辑以生成所述待处理数据对应的字节序列数据,包括:
5.根据权利要求4所述的方法,其特征在于,所述方法进一步包括:
6.根据权利要求4所述的方法,其特征在于,所述预设数据类型进一步包括:字节型、字节数组型、短整型、整型、单精度浮点型、双精度浮点型、布尔型、日期型、字符串型和对象型;以及,所述对所述待处理数据执行预置的、对应于所述目标数据类型的序列化逻辑以生成所述待处理数据对应的字节序列数据,进一步包括:
7.根据权利要求1所述的方法,其特征在于,所述标记字节具有压缩标记位;以及,所述方法进一步包括:
8.根据权利要求1所述的方法,其特征在于,所述方法进一步包括:
9.一种序列化处理装置,其特征在于,包括:
10.一种电子设备,其特征在于,包括:
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-8中任一所述的方法。
