CN114201774A - 主键加密方法、主键解密方法、电子设备及存储介质 - Google Patents
主键加密方法、主键解密方法、电子设备及存储介质 Download PDFInfo
- Publication number
- CN114201774A CN114201774A CN202111525522.XA CN202111525522A CN114201774A CN 114201774 A CN114201774 A CN 114201774A CN 202111525522 A CN202111525522 A CN 202111525522A CN 114201774 A CN114201774 A CN 114201774A
- Authority
- CN
- China
- Prior art keywords
- primary key
- key
- character string
- target
- ciphertext
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6227—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2151—Time stamp
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Bioethics (AREA)
- Databases & Information Systems (AREA)
- Storage Device Security (AREA)
Abstract
本申请公开了一种主键加密方法、主键解密方法、电子设备及存储介质。本申请在对数据库中的主键加密时,以其创建时间戳中的部分字符作为加密因子得到主键更新值,该主键更新值由于有加密因子的作用,其中的各字符足够离散无规律,因此可保障主键的安全,之后再对主键更新值和加密因子分别加密,相当于二次保障主键安全。可见,该方案可使被加密的明文足够离散无序,就算主键加密值被解密得到相关明文,也无法基于该明文直接得到主键,因此可提高主键的安全性。相应地,本申请提供的主键解密方法、电子设备及存储介质,也同样具有上述技术效果。
Description
技术领域
本申请涉及计算机技术领域,特别涉及一种主键加密方法、主键解密方法、电子设备及存储介质。
背景技术
目前,数据库中各数据库的主键一般以自增方式设定,如:某一数据库中的各主键为:1、2、3、4、5、6……主键即数据库中各字段的ID。在数据库读写场景中,主键不免需要进行网络传输,且自增方式的主键容易被爬虫,因此主键的安全性有待提高。
因此,如何提高主键的安全性,是本领域技术人员需要解决的问题。
发明内容
有鉴于此,本申请的目的在于提供一种主键加密方法、主键解密方法、电子设备及存储介质,以提高主键的安全性。其具体方案如下:
第一方面,本申请提供了一种主键加密方法,包括:
获取目标数据库中的主键,以及所述主键的创建时间戳;
从所述创建时间戳中截取预设长度的字符串,并基于所述字符串和所述主键生成主键更新值;
分别对所述主键更新值和所述字符串进行加密,得到主键密文和字符串密文;
拼接所述主键密文和所述字符串密文,得到所述主键的加密值。
可选地,所述从所述创建时间戳中截取预设长度的字符串,包括:
判断所述创建时间戳的后N位是否全为0;N不大于所述创建时间戳的总长度;
若所述创建时间戳的后N位不全为0,则截取所述创建时间戳的后N位作为所述字符串;
若所述创建时间戳的后N位全为0,则截取所述创建时间戳的前N位作为所述字符串。
可选地,所述基于所述字符串和所述主键生成主键更新值,包括:
将所述字符串与所述主键的乘积作为所述主键更新值。
可选地,所述分别对所述主键更新值和所述字符串进行加密,得到主键密文和字符串密文,包括:
将所述主键更新值和所述字符串分别作为加密对象,并利用EncodeDec函数加密所述加密对象,得到所述主键密文和所述字符串密文。
可选地,所述利用EncodeDec函数加密所述加密对象,包括:
将所述加密对象转换为十六进制数,并截取所述十六进制数的前M位字符或后M位字符,得到截取字符;M不大于所述十六进制数的总长度;
将所述截取字符中的每个字符分别转换为二进制数,得到M个二进制数;
拼接所述M个二进制数,并将拼接所得的二进制数切分为目标数量个二进制数;
将所述目标数量个二进制数分别转换为十进制数,得到目标数量个十进制数;
以每个十进制数作为位置标记,在关键字符中确定每个位置标记对应的目标字符,并按序记录所述目标字符;所述关键字符按照预设偏移值从随机生成的密钥中截取获得;
从所述十六进制数中删除所述截取字符,在删除后的所述十六进制数的长度大于0时,将删除后的所述十六进制数作为新的十六进制数,并重复执行所述截取所述十六进制数的前M位字符或后M位字符,得到截取字符的步骤,直至删除后的所述十六进制数的长度不大于0时,将记录的所有目标字符作为所述加密对象的密文。
可选地,还包括:
若合并所述目标数据库与对象数据库,则将所述目标数据库和所述对象数据库中的各主键作为更新对象,并为属于不同库的所述更新对象添加不同的前缀,或为属于不同库的所述更新对象添加不同的后缀。
可选地,还包括:
若合并所述目标数据库与对象数据库,且合并所得的数据库需要进行网络传输,则为属于不同库的所述更新对象的加密值添加不同的前缀,或为属于不同库的所述更新对象的加密值添加不同的后缀。
第二方面,本申请提供了一种主键解密方法,包括:
获得主键的加密值,拆分所述加密值得到主键密文和字符串密文;
分别对所述主键密文和所述字符串密文进行解密,得到主键更新值和字符串;
基于所述主键更新值和所述字符串确定所述主键。
可选地,所述分别对所述主键密文和所述字符串密文进行解密,得到主键更新值和字符串,包括:
将所述主键密文和所述字符串密文分别作为解密对象,并利用DecodeString函数对所述解密对象进行解密,得到所述主键更新值和所述字符串。
可选地,所述利用DecodeString函数对所述解密对象进行解密,包括:
截取所述解密对象的后目标数量个目标字符或前目标数量个目标字符;
确定每个目标字符在关键字符中的位置标记,得到目标数量个位置标记;所述关键字符按照预设偏移值从随机生成的密钥中截取获得;
将所述目标数量个位置标记分别转换为二进制数,得到目标数量个二进制数;
拼接所述目标数量个二进制数,并将拼接所得的二进制数切分为M个二进制数;
将所述M个二进制数分别转换为十六进制数,得到M个十六进制字符;
从所述解密对象中删除所述目标字符,在删除后的所述解密对象的长度大于0时,将删除后的所述解密对象作为新的解密对象,并重复执行所述截取所述解密对象的后目标数量个目标字符或前目标数量个目标字符的步骤,直至删除后的所述解密对象的长度不大于0时,将得到的所有十六进制字符作为所述解密对象的明文。
可选地,所述基于所述主键更新值和所述字符串确定所述主键,包括:
将所述主键更新值与所述字符串的比值作为所述主键。
第三方面,本申请提供了一种电子设备,包括:
存储器,用于存储计算机程序;
处理器,用于调用并执行所述计算机程序,以实现前述公开的方法。
第四方面,本申请提供了一种可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器调用并执行时实现前述公开的方法。
通过以上方案可知,本申请提供了一种主键加密方法,包括:获取目标数据库中的主键,以及所述主键的创建时间戳;从所述创建时间戳中截取预设长度的字符串,并基于所述字符串和所述主键生成主键更新值;分别对所述主键更新值和所述字符串进行加密,得到主键密文和字符串密文;拼接所述主键密文和所述字符串密文,得到所述主键的加密值。
可见,本申请在对数据库中的主键加密时,以其创建时间戳中的部分字符作为加密因子(即预设长度的字符串)得到主键更新值,该主键更新值由于有加密因子的作用,其中的各字符足够离散无规律,因此可保障主键的安全,之后再对主键更新值和加密因子分别加密,相当于二次保障主键安全。可见,该方案可使被加密的明文足够离散无序,就算主键加密值被解密得到相关明文,也无法基于该明文直接得到主键,因此可提高主键的安全性。
相应地,本申请提供的主键解密方法、电子设备及存储介质,也同样具有上述技术效果。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请公开的一种主键加密方法流程图;
图2为本申请公开的另一种主键加密方法流程图;
图3为图2对应的具体加密流程图;
图4为本申请公开的一种主键解密方法流程图;
图5为本申请公开的另一种主键解密方法流程图;
图6为图5对应的具体解密流程图;
图7为本申请公开的一种主键加密装置示意图;
图8为本申请公开的一种主键解密装置示意图;
图9为本申请公开的一种电子设备示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
目前,数据库中各数据库的主键一般以自增方式设定,如:某一数据库中的各主键为:1、2、3、4、5、6……主键即数据库中各字段的ID。在数据库读写场景中,主键不免需要进行网络传输,且自增方式的主键容易被爬虫,因此主键的安全性有待提高。为此,本申请提供了一种主键加密方案,能够提高主键的安全性。
下面对本申请实施例提供的一种主键加密方法进行介绍,参见图1所示,本申请实施例公开了一种主键加密方法,包括:
S101、获取目标数据库中的主键,以及主键的创建时间戳。
在本实施例中,目标数据库可以是任意类型数据库。如:MySQL数据库。目标数据库中的主键以自增方式生成,其创建时间戳以年、月、日、时、分、秒记录,如:2021年12月11日23时56分38秒记录为:20211211235638。
目标数据库中的主键即:数据库中各字段的ID。
S102、从创建时间戳中截取预设长度的字符串,并基于字符串和主键生成主键更新值。
其中,预设长度需不大于创建时间戳的总长度,如:当创建时间戳为20211211235638时,预设长度需不大于14。一般地,预设长度取值为5。
在一种具体实施方式中,从创建时间戳中截取预设长度的字符串,包括:判断创建时间戳的后N位是否全为0;N不大于所述创建时间戳的总长度;若创建时间戳的后N位不全为0,则截取创建时间戳的后N位作为字符串;若创建时间戳的后N位全为0,则截取创建时间戳的前N位作为字符串,如此可使得针对不同主键所确定的字符串尽可能不同。N即为预设长度。
在一种具体实施方式中,基于字符串和主键生成主键更新值,包括:将字符串与主键的乘积作为主键更新值。当然,也可以使字符串与主键做其他运算来得到主键更新值,如:拼接字符串与主键、将字符串与主键进行逻辑运算(如:异或运算)等。
S103、分别对主键更新值和字符串进行加密,得到主键密文和字符串密文。
在一种具体实施方式中,分别对主键更新值和字符串进行加密,得到主键密文和字符串密文,包括:将主键更新值和字符串分别作为加密对象,并利用EncodeDec函数加密加密对象,得到主键密文和字符串密文。
在一种具体实施方式中,利用EncodeDec函数加密加密对象,包括:将加密对象转换为十六进制数,并截取十六进制数的前M位字符或后M位字符,得到截取字符;M不大于所述十六进制数的总长度;将截取字符中的每个字符分别转换为二进制数,得到M个二进制数;拼接M个二进制数,并将拼接所得的二进制数切分为目标数量个二进制数;将目标数量个二进制数分别转换为十进制数,得到目标数量个十进制数;以每个十进制数作为位置标记,在关键字符中确定每个位置标记对应的目标字符,并按序记录目标字符;关键字符(即图3中的key)按照预设偏移值从随机生成的密钥中截取获得;从十六进制数中删除截取字符,在删除后的十六进制数的长度大于0时,将删除后的十六进制数作为新的十六进制数,并重复执行截取十六进制数的前M位字符或后M位字符,得到截取字符的步骤,直至删除后的十六进制数的长度不大于0时,将记录的所有目标字符作为加密对象的密文。
在一种实施方式中,M取值3,目标数量取值2。
S104、拼接主键密文和字符串密文,得到主键的加密值。
具体的,拼接主键密文和字符串密文时,可以直接拼接,也可以使用符号拼接。例如:用A表示主键密文,用B表示字符串密文,那么主键的加密值可以是AB、A+B、A-B、A_B等。
按照本实施例提供的方案,可以对任意数据库中的任意主键进行加密。在对数据库中的主键加密时,以其创建时间戳中的部分字符作为加密因子(即预设长度的字符串)得到主键更新值,该主键更新值由于有加密因子的作用,其中的各字符足够离散无规律,因此可保障主键的安全,之后再对主键更新值和加密因子分别加密,相当于二次保障主键安全。
可见,本实施例可使被加密的明文足够离散无序,就算主键加密值被解密得到相关明文,也无法基于该明文直接得到主键,因此可提高主键的安全性。
基于上述实施例,需要说明的是,如果不同数据库都以自增方式生成主键,那么这些数据库在合并时会造成主键冲突。如:数据库A中的各主键为:1、2、3、4,数据库B中的各主键为:1、2、3、4、5,那么数据库A和数据库B合并后,合并所得的库中就会有:两个1、两个2、两个3、两个4,造成主键冲突。
为此,在一种具体实施方式中,还包括:若合并目标数据库与对象数据库,则将目标数据库和对象数据库中的各主键作为更新对象,并为属于不同库的更新对象添加不同的前缀,或为属于不同库的更新对象添加不同的后缀。
仍以上述为例,假设数据库A中的各主键的前缀为A,数据库B中的各主键的前缀为B,那么合并所得的库中就会有:A-1、A-2、A-3、A-4、B-1、B-2、B-3、B-4、B-5,如此基于可以区分出不同库里的相同主键。
在一种具体实施方式中,若合并目标数据库与对象数据库,且合并所得的数据库需要进行网络传输,则为属于不同库的更新对象的加密值添加不同的前缀,或为属于不同库的更新对象的加密值添加不同的后缀,从而使得各主键以密文形式在网络中进行传输,保障其安全。
下面对本申请实施例提供的另一实施例主键加密方法进行介绍,请参见图2,另一实施例主键加密方法包括:
步骤1:输入前缀prefix、数据库中的某一id(即数据库中的某一主键)、其创建时间createTime。
步骤2:将创建时间createTime转换成时间戳,并从时间戳中截取后5位作为时间因子timeFactor(即加密因子),如果后五位全为0,则截取时间戳的前五位。
步骤3:对id与时间因子timeFactor的乘积使用EncodeDec函数加密,获得加密值idCode。其中,对id与时间因子timeFactor的乘积加密,可使加密前的明文字符变得足够分散,不容易被爬虫遍历。
步骤4:对时间因子timeFactor也使用EncodeDec函数加密,获得加密值timeCode。
步骤5:将前缀prefix、加密值idCode、加密值timeCode通过“_”拼接,即可得到数据库中该id的加密值idStr。
可见,idStr由prefix、idCode、timeCode三部分组成,不同部分之间用下划线“_”拼接。
其中,步骤3和步骤4中的具体加密流程完全相同,具体可参见图3。
在图3中,加密值dec即:id与时间因子timeFactor的乘积,或时间因子timeFactor本身。也即:将id与时间因子timeFactor的乘积、时间因子timeFactor分别作为加密对象,来执行图3所示的加密流程,最终得到的加密值字符串str即为加密对象的密文。具体的加密步骤可参照前述实施例的相关介绍,在此不再赘述。
在本实施例中,prefix为前缀字符串参数,属于字符串类型。不同数据库的前缀不同,以区分不同库,避免合并库时主键冲突。id为任意数据库中的自增ID,为int64类型。时间因子timeFactor由5位数字组成。密钥为字符串类型,由64位不相同的字符随机组成,可包含大小写字母、数字、下划线等字符,属于全局常量。偏移量offset为数字类型,用于对密钥进行偏移,使加密后的数据更加多样,更加无规律可循。偏移量值为0到64之间,当偏移量超出此范围,偏移量为0,既密钥不进行偏移,具体可自行定义。
可见,本实施例基于EncodeDec函数加密id,可保障数据库id的安全。EncodeDec函数能够将十进制数按照图3所示的流程转成相应密文。该方案的加密流程便捷灵活,可在不需要修改源数据的情况下,对数据库进行合并,并解决主键冲突问题,加密方法可以把自增ID转成不规则的字符串进行传输,增加被爬虫的难度,加密方法还引入了密钥和创建时间,能够增加被破解的难度,安全性更高。
下面对本申请实施例提供的一种主键解密方法进行介绍,请参见图4,一种主键解密方法包括:
S401、获得主键的加密值,拆分加密值得到主键密文和字符串密文。
其中,加密值按照上述任意实施例所述的方法加密得到。如果主键的加密值是AB、A+B、A-B或A_B,那么可确定A为主键密文,B为字符串密文。
S402、分别对主键密文和字符串密文进行解密,得到主键更新值和字符串。
解密流程是加密流程的逆向,故本实施例中的解密步骤可对照前述实施例介绍的加密步骤进行理解。
在一种具体实施方式中,分别对主键密文和字符串密文进行解密,得到主键更新值和字符串,包括:将主键密文和字符串密文分别作为解密对象,并利用DecodeString函数对解密对象进行解密,得到主键更新值和字符串。
在一种具体实施方式中,利用DecodeString函数对解密对象进行解密,包括:截取解密对象的后目标数量个目标字符或前目标数量个目标字符;确定每个目标字符在关键字符中的位置标记,得到目标数量个位置标记;关键字符按照预设偏移值从随机生成的密钥中截取获得;将目标数量个位置标记分别转换为二进制数,得到目标数量个二进制数;拼接目标数量个二进制数,并将拼接所得的二进制数切分为M个二进制数;将M个二进制数分别转换为十六进制数,得到M个十六进制字符;从解密对象中删除目标字符,在删除后的解密对象的长度大于0时,将删除后的解密对象作为新的解密对象,并重复执行截取解密对象的后目标数量个目标字符或前目标数量个目标字符的步骤,直至删除后的解密对象的长度不大于0时,将得到的所有十六进制字符作为解密对象的明文。
S403、基于主键更新值和字符串确定主键。
本实施例中的S403是前述实施例中的“基于字符串和主键生成主键更新值”逆过程,因此当将字符串与主键的乘积作为主键更新值时,在一种具体实施方式中,基于主键更新值和字符串确定主键,包括:将主键更新值与字符串的比值作为主键。
按照本实施例提供的方案,可以对任意数据库中的任意主键的加密值进行解密,从而获得主键明文。
下面对本申请实施例提供的另一实施例的主键解密方法进行介绍,请参见图5,另一实施例的主键解密方法包括:
步骤1:输入前缀prefix、加密后字符串idStr、偏移量offset。
步骤2:将加密后字符串idStr拆分为:前缀prefix、时间因子加密值timeCode、id加密值idCode三部分。
步骤3:对加密值timeCode使用DecodeString函数,解密成时间因子timeFactor。
步骤4:对id加密值idCode使用DecodeString函数,解密成id与timeFactor的乘积。
步骤5:用id与timeFactor的乘积,除以时间因子,获得最终的自增id。
其中,步骤3和步骤4中的具体解密流程完全相同,具体可参见图6。
在图6中,加密值字符串str为加密值timeCode或加密值idCode。也即:将加密值timeCode、加密值idCode分别作为解密对象,来执行图6所示的加密流程,最终得到的十进制dec即为时间因子timeFactor或乘积。具体的解密步骤可参照前述实施例的相关介绍,在此不再赘述。
可见,本实施例基于DecodeString函数解密id,灵活且便捷。DecodeString函数能够将密文字符串解密成对应的十进制数。
下面对本申请实施例提供的一实施例的主键加密装置进行介绍,下文描述的一实施例的主键加密装置与上文描述的一实施例的主键加密方法可以相互参照。
参见图7所示,本申请实施例公开了一种主键加密装置,包括:
获取模块701,用于获取目标数据库中的主键,以及主键的创建时间戳;
生成模块702,用于从创建时间戳中截取预设长度的字符串,并基于字符串和主键生成主键更新值;
加密模块703,用于分别对主键更新值和字符串进行加密,得到主键密文和字符串密文;
拼接模块704,用于拼接主键密文和字符串密文,得到主键的加密值。
在一种具体实施方式中,生成模块具体用于:
判断创建时间戳的后N位是否全为0;N不大于所述创建时间戳的总长度;
若创建时间戳的后N位不全为0,则截取创建时间戳的后N位作为字符串;
若创建时间戳的后N位全为0,则截取创建时间戳的前N位作为字符串。
在一种具体实施方式中,生成模块具体用于:
将字符串与主键的乘积作为主键更新值。
在一种具体实施方式中,加密模块包括:
加密单元,用于将主键更新值和字符串分别作为加密对象,并利用EncodeDec函数加密加密对象,得到主键密文和字符串密文。
在一种具体实施方式中,加密单元具体用于:
将加密对象转换为十六进制数,并截取十六进制数的前M位字符或后M位字符,得到截取字符;M不大于所述十六进制数的总长度;
将截取字符中的每个字符分别转换为二进制数,得到M个二进制数;
拼接M个二进制数,并将拼接所得的二进制数切分为目标数量个二进制数;
将目标数量个二进制数分别转换为十进制数,得到目标数量个十进制数;
以每个十进制数作为位置标记,在关键字符中确定每个位置标记对应的目标字符,并按序记录目标字符;关键字符按照预设偏移值从随机生成的密钥中截取获得;
从十六进制数中删除截取字符,在删除后的十六进制数的长度大于0时,将删除后的十六进制数作为新的十六进制数,并重复执行截取十六进制数的前M位字符或后M位字符,得到截取字符的步骤,直至删除后的十六进制数的长度不大于0时,将记录的所有目标字符作为加密对象的密文。
在一种具体实施方式中,还包括:
合并模块,用于若合并目标数据库与对象数据库,则将目标数据库和对象数据库中的各主键作为更新对象,并为属于不同库的更新对象添加不同的前缀,或为属于不同库的更新对象添加不同的后缀。
在一种具体实施方式中,还包括:
传输模块,用于若合并目标数据库与对象数据库,且合并所得的数据库需要进行网络传输,则为属于不同库的更新对象的加密值添加不同的前缀,或为属于不同库的更新对象的加密值添加不同的后缀。
其中,关于本实施例中各个模块、单元更加具体的工作过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
可见,本实施例提供了一种主键加密装置,可使被加密的明文足够离散无序,就算主键加密值被解密得到相关明文,也无法基于该明文直接得到主键,因此可提高主键的安全性。
下面对本申请实施例提供的一种主键解密装置进行介绍,下文描述的一种主键解密装置与上文描述的一种主键解密方法可以相互参照。
参见图8所示,本申请实施例公开了一种主键解密装置,包括:
拆分模块801,用于获得主键的加密值,拆分加密值得到主键密文和字符串密文;
解密模块802,用于分别对主键密文和字符串密文进行解密,得到主键更新值和字符串;
确定模块803,用于基于主键更新值和字符串确定主键。
在一种具体实施方式中,解密模块包括:
解密单元,用于将主键密文和字符串密文分别作为解密对象,并利用DecodeString函数对解密对象进行解密,得到主键更新值和字符串。
在一种具体实施方式中,解密单元具体用于:
截取解密对象的后目标数量个目标字符或前目标数量个目标字符;
确定每个目标字符在关键字符中的位置标记,得到目标数量个位置标记;关键字符按照预设偏移值从随机生成的密钥中截取获得;
将目标数量个位置标记分别转换为二进制数,得到目标数量个二进制数;
拼接目标数量个二进制数,并将拼接所得的二进制数切分为M个二进制数;
将M个二进制数分别转换为十六进制数,得到M个十六进制字符;
从解密对象中删除目标字符,在删除后的解密对象的长度大于0时,将删除后的解密对象作为新的解密对象,并重复执行截取解密对象的后目标数量个目标字符或前目标数量个目标字符的步骤,直至删除后的解密对象的长度不大于0时,将得到的所有十六进制字符作为解密对象的明文。
在一种具体实施方式中,确定模块具体用于:
将主键更新值与字符串的比值作为主键。
其中,关于本实施例中各个模块、单元更加具体的工作过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
可见,本实施例提供了一种主键解密装置,可对任意数据库中的任意主键的加密值进行解密,从而获得主键明文。
下面对本申请实施例提供的一种电子设备进行介绍,下文描述的一种电子设备与上文描述的一种主键加密方法及装置、一种主键解密方法及装置可以相互参照。
参见图9所示,本申请实施例公开了一种电子设备,包括:
存储器901,用于保存计算机程序;
处理器902,用于调用并执行所述计算机程序,以实现上述任意实施例公开的方法。
下面对本申请实施例提供的一种可读存储介质进行介绍,下文描述的一种可读存储介质与上文描述的一种主键加密方法、装置及设备,一种主键解密方法、装置及设备可以相互参照。
一种可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器调用并执行时实现前述实施例公开的主键加密或主键解密方法。关于该方法的具体步骤可以参考前述实施例中公开的相应内容,在此不再进行赘述。
本申请涉及的“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法或设备固有的其它步骤或单元。
需要说明的是,在本申请中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本申请要求的保护范围之内。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的可读存储介质中。
本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (13)
1.一种主键加密方法,其特征在于,包括:
获取目标数据库中的主键,以及所述主键的创建时间戳;
从所述创建时间戳中截取预设长度的字符串,并基于所述字符串和所述主键生成主键更新值;
分别对所述主键更新值和所述字符串进行加密,得到主键密文和字符串密文;
拼接所述主键密文和所述字符串密文,得到所述主键的加密值。
2.根据权利要求1所述的方法,其特征在于,所述从所述创建时间戳中截取预设长度的字符串,包括:
判断所述创建时间戳的后N位是否全为0;N不大于所述创建时间戳的总长度;
若所述创建时间戳的后N位不全为0,则截取所述创建时间戳的后N位作为所述字符串;
若所述创建时间戳的后N位全为0,则截取所述创建时间戳的前N位作为所述字符串。
3.根据权利要求1所述的方法,其特征在于,所述基于所述字符串和所述主键生成主键更新值,包括:
将所述字符串与所述主键的乘积作为所述主键更新值。
4.根据权利要求1所述的方法,其特征在于,所述分别对所述主键更新值和所述字符串进行加密,得到主键密文和字符串密文,包括:
将所述主键更新值和所述字符串分别作为加密对象,并利用EncodeDec函数加密所述加密对象,得到所述主键密文和所述字符串密文。
5.根据权利要求4所述的方法,其特征在于,所述利用EncodeDec函数加密所述加密对象,包括:
将所述加密对象转换为十六进制数,并截取所述十六进制数的前M位字符或后M位字符,得到截取字符;M不大于所述十六进制数的总长度;
将所述截取字符中的每个字符分别转换为二进制数,得到M个二进制数;
拼接所述M个二进制数,并将拼接所得的二进制数切分为目标数量个二进制数;
将所述目标数量个二进制数分别转换为十进制数,得到目标数量个十进制数;
以每个十进制数作为位置标记,在关键字符中确定每个位置标记对应的目标字符,并按序记录所述目标字符;所述关键字符按照预设偏移值从随机生成的密钥中截取获得;
从所述十六进制数中删除所述截取字符,在删除后的所述十六进制数的长度大于0时,将删除后的所述十六进制数作为新的十六进制数,并重复执行所述截取所述十六进制数的前M位字符或后M位字符,得到截取字符的步骤,直至删除后的所述十六进制数的长度不大于0时,将记录的所有目标字符作为所述加密对象的密文。
6.根据权利要求1-5任意一项所述的方法,其特征在于,还包括:
若合并所述目标数据库与对象数据库,则将所述目标数据库和所述对象数据库中的各主键作为更新对象,并为属于不同库的所述更新对象添加不同的前缀,或为属于不同库的所述更新对象添加不同的后缀。
7.根据权利要求1-5任意一项所述的方法,其特征在于,还包括:
若合并所述目标数据库与对象数据库,且合并所得的数据库需要进行网络传输,则为属于不同库的所述更新对象的加密值添加不同的前缀,或为属于不同库的所述更新对象的加密值添加不同的后缀。
8.一种主键解密方法,其特征在于,包括:
获得主键的加密值,拆分所述加密值得到主键密文和字符串密文;
分别对所述主键密文和所述字符串密文进行解密,得到主键更新值和字符串;
基于所述主键更新值和所述字符串确定所述主键。
9.根据权利要求8所述的方法,其特征在于,所述分别对所述主键密文和所述字符串密文进行解密,得到主键更新值和字符串,包括:
将所述主键密文和所述字符串密文分别作为解密对象,并利用DecodeString函数对所述解密对象进行解密,得到所述主键更新值和所述字符串。
10.根据权利要求9所述的方法,其特征在于,所述利用DecodeString函数对所述解密对象进行解密,包括:
截取所述解密对象的后目标数量个目标字符或前目标数量个目标字符;
确定每个目标字符在关键字符中的位置标记,得到目标数量个位置标记;所述关键字符按照预设偏移值从随机生成的密钥中截取获得;
将所述目标数量个位置标记分别转换为二进制数,得到目标数量个二进制数;
拼接所述目标数量个二进制数,并将拼接所得的二进制数切分为M个二进制数;
将所述M个二进制数分别转换为十六进制数,得到M个十六进制字符;
从所述解密对象中删除所述目标字符,在删除后的所述解密对象的长度大于0时,将删除后的所述解密对象作为新的解密对象,并重复执行所述截取所述解密对象的后目标数量个目标字符或前目标数量个目标字符的步骤,直至删除后的所述解密对象的长度不大于0时,将得到的所有十六进制字符作为所述解密对象的明文。
11.根据权利要求8所述的方法,其特征在于,所述基于所述主键更新值和所述字符串确定所述主键,包括:
将所述主键更新值与所述字符串的比值作为所述主键。
12.一种电子设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于调用并执行所述计算机程序,以实现如权利要求1至11任一项所述的方法。
13.一种可读存储介质,其特征在于,用于保存计算机程序,其中,所述计算机程序被处理器调用并执行时实现如权利要求1至11任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111525522.XA CN114201774A (zh) | 2021-12-14 | 2021-12-14 | 主键加密方法、主键解密方法、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111525522.XA CN114201774A (zh) | 2021-12-14 | 2021-12-14 | 主键加密方法、主键解密方法、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114201774A true CN114201774A (zh) | 2022-03-18 |
Family
ID=80653535
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111525522.XA Pending CN114201774A (zh) | 2021-12-14 | 2021-12-14 | 主键加密方法、主键解密方法、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114201774A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115277239A (zh) * | 2022-08-02 | 2022-11-01 | 恒生电子股份有限公司 | 数据库数据的加密方法及装置 |
-
2021
- 2021-12-14 CN CN202111525522.XA patent/CN114201774A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115277239A (zh) * | 2022-08-02 | 2022-11-01 | 恒生电子股份有限公司 | 数据库数据的加密方法及装置 |
CN115277239B (zh) * | 2022-08-02 | 2023-12-05 | 恒生电子股份有限公司 | 数据库数据的加密方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8938067B2 (en) | Format preserving encryption methods for data strings with constraints | |
US8175268B2 (en) | Generating and securing archive keys | |
US8345876B1 (en) | Encryption/decryption system and method | |
US20060177065A1 (en) | System and methods for encrypting data utilizing one-time pad key | |
KR101216995B1 (ko) | 인덱스 테이블 기반 코드 암호화 및 복호화 장치 및 그 방법 | |
CN110278115B (zh) | 热更新方法及装置 | |
CN110289946B (zh) | 一种区块链钱包本地化文件的生成方法及区块链节点设备 | |
CN110929291A (zh) | 一种存取文本文件的方法、装置和计算机可读存储介质 | |
CN114327261B (zh) | 数据文件的存储方法及数据安全代理 | |
CN114201774A (zh) | 主键加密方法、主键解密方法、电子设备及存储介质 | |
KR20070114011A (ko) | 데이터 처리 장치, 데이터 처리 방법 및 데이터 처리용컴퓨터 프로그램 제품 | |
CN110113151B (zh) | 一种对elf格式程序的非侵入式实时加解密方法 | |
US8144876B2 (en) | Validating encrypted archive keys with MAC value | |
CN108376212B (zh) | 执行代码安全保护方法、装置及电子装置 | |
US8494169B2 (en) | Validating encrypted archive keys | |
US8897440B2 (en) | Cryptographic system of symmetric-key encryption using large permutation vector keys | |
CN109558341A (zh) | 计算机内存数据保护方法和计算机 | |
CN110516457B (zh) | 一种数据存储方法及读取方法、存储设备 | |
CN113360859B (zh) | 基于Python解释器的加密文件安全控制方法和装置 | |
CN111404662B (zh) | 一种数据处理方法及装置 | |
CN116743461B (zh) | 基于时间戳的商品数据加密方法和装置 | |
CN112749402B (zh) | 电子数据的处理方法、装置、电子设备及存储介质 | |
US20230060837A1 (en) | Encrypted file name metadata in a distributed file system directory entry | |
CN113849385A (zh) | 一种日志文件的生成与解析方法及装置 | |
JP2021051738A (ja) | アクセス管理システムにおけるidおよび付加情報管理システム、およびそのプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |