CN110351077A - 数据加密的方法、装置、计算机设备和存储介质 - Google Patents

数据加密的方法、装置、计算机设备和存储介质 Download PDF

Info

Publication number
CN110351077A
CN110351077A CN201910463613.1A CN201910463613A CN110351077A CN 110351077 A CN110351077 A CN 110351077A CN 201910463613 A CN201910463613 A CN 201910463613A CN 110351077 A CN110351077 A CN 110351077A
Authority
CN
China
Prior art keywords
character string
code
password
string
symmetric key
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.)
Granted
Application number
CN201910463613.1A
Other languages
English (en)
Other versions
CN110351077B (zh
Inventor
梁炳春
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ping An Technology Shenzhen Co Ltd
Original Assignee
Ping An Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Ping An Technology Shenzhen Co Ltd filed Critical Ping An Technology Shenzhen Co Ltd
Priority to CN201910463613.1A priority Critical patent/CN110351077B/zh
Publication of CN110351077A publication Critical patent/CN110351077A/zh
Application granted granted Critical
Publication of CN110351077B publication Critical patent/CN110351077B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3242Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Power Engineering (AREA)
  • Storage Device Security (AREA)

Abstract

本申请中提供了一种数据加密的方法、装置、计算机设备和存储介质,包括:依据接收到的第一代码生成第一随机字符串,其中,第一代码为用于生成随机字符串的代码,第一随机字符串为定长16位的随机数;将第一随机字符串作为密钥种子生成对称密钥;将对称密钥转换成十六进制的第一字符串;将第一字符串与接收到的预设密码连接形成第一密码值,通过对第一密码值进行hash运算得到加密值。通过将生成的第一随机字符串作为密钥种子生成对称密钥,并将对称密钥转换成第一字符串,以便与预设密码连接后再进行hash运算后得到加密值,提高盐值的随机性以及增加盐值的长度,进而提高盐值的复杂度,使存储密码的强度增强,降低安全风险。

Description

数据加密的方法、装置、计算机设备和存储介质
技术领域
本申请涉及计算机技术领域,特别涉及一种数据加密的方法、装置、计算机设备和存储介质。
背景技术
盐值就是在密码hash(哈希)运算过程中添加的额外的随机值。
目前的明文盐值是通过产生一个随机字符串,做哈希运算后进行密文存储,容易通过逆向查表法进行破解,存在较高的安全风险。因此,亟需提出一种通过提高盐值的随机性以及增加盐值的长度,随机生成复杂盐值进行数据加密的方法。
发明内容
本申请的主要目的为提供一种数据加密的方法、装置、计算机设备和存储介质,旨在提高盐值的复杂度,防止密码被破解的问题。
为实现上述目的,本申请提供了一种数据加密的方法,包括以下步骤:
依据接收到的第一代码生成第一随机字符串,其中,所述第一代码为用于生成随机字符串的代码,所述第一随机字符串为定长16位的随机数;
将所述第一随机字符串作为密钥种子生成对称密钥;
将所述对称密钥转换成十六进制的第一字符串;
将所述第一字符串与接收到的预设密码连接形成第一密码值,通过对所述第一密码值进行hash运算得到加密值。
进一步地,所述将所述对称密钥转换成十六进制的第一字符串的步骤,包括:
接收用户设置的用于将所述对称密钥转换成所述第一字符串的第二代码,其中,所述第二代码为将所述对称秘钥转换成对应的所述第一字符串的代码程序;
依据所述第二代码,将所述对称密钥转换成十六进制的所述第一字符串。
进一步地,所述将所述第一随机字符串作为密钥种子生成对称密钥的步骤,包括:
通过信息摘要算法对生成的所述第一随机字符串进行hash运算,得到第一hash值;
将所述第一hash值作为密钥种子,生成AES_128的对称密钥。
进一步地,所述将所述第一字符串与接收到的预设密码连接形成第一密码值,通过对所述第一密码值进行hash运算得到加密值的步骤,包括:
将所述第一字符串作为前缀或者后缀与所述预设密码连接,形成所述第一密码值;
通过对所述第一密码值进行hash运算,得到对应的加密值。
进一步地,所述将所述对称密钥转换成十六进制的第一字符串的步骤之后,包括:
检测作为盐值的所述第一字符串是否包括有数字与字母;
若否,则重新获取新的第一随机字符串,以得到新的第一字符串。
进一步地,所述依据接收到的第一代码生成第一随机字符串的步骤之前,包括:
接收用户设置的用于生成随机字符串的第一代码,以及用户设置的用于登录的所述预设密码。
本申请还提供了一种数据加密的装置,包括:
第一生成模块,用于依据接收到的第一代码生成第一随机字符串,其中,所述第一代码为用于生成随机字符串的代码,所述第一随机字符串为定长16位的随机数;
第二生成模块,用于将所述第一随机字符串作为密钥种子生成对称密钥;
转换模块,用于将所述对称密钥转换成十六进制的第一字符串;
连接模块,用于将所述第一字符串与接收到的预设密码连接形成第一密码值,通过对所述第一密码值进行hash运算得到加密值。
进一步地,所述转换模块包括:
接收单元,用于接收用户设置的用于将所述对称密钥转换成所述第一字符串的第二代码,其中,所述第二代码为将所述对称秘钥转换成对应的所述第一字符串的代码程序;
转换单元,用于依据所述第二代码,将所述对称密钥转换成十六进制的所述第一字符串。
本申请还提供一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器执行所述计算机程序时实现上述任一项所述方法的步骤。
本申请还提供一种计算机存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述的方法的步骤。
本申请中提供的数据加密的方法、装置、计算机设备和存储介质,具有以下有益效果:
本申请中提供的数据加密的方法、装置、计算机设备和存储介质,通过将生成的第一随机字符串作为密钥种子生成对称密钥,并将对称密钥转换成第一字符串,以便与预设密码连接后再进行hash运算后得到加密值,提高盐值的随机性以及增加盐值的长度,进而提高盐值的复杂度,使存储密码的强度增强,降低安全风险。
附图说明
图1是本申请一实施例中数据加密的方法步骤示意图;
图2是本申请一实施例中数据加密的装置结构框图;
图3是本申请一实施例的计算机设备的结构示意框图。
本申请目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
参照图1,为本申请一实施例中提供了一种数据加密的方法,包括以下步骤:
步骤S1,依据接收到的第一代码生成第一随机字符串,其中,所述第一代码为用于生成随机字符串的代码,所述第一随机字符串为定长16位的随机数;
步骤S2,将所述第一随机字符串作为密钥种子生成对称密钥;
步骤S3,将所述对称密钥转换成十六进制的第一字符串;
步骤S4,将所述第一字符串与接收到的预设密码连接形成第一密码值,通过对所述第一密码值进行hash运算得到加密值。
以上步骤中,用户预先编写一个用于产生随机字符串的第一代码的代码程序,系统接收到用户设置的第一代码后,通过接收到的第一代码生成第一随机字符串,该第一随机字符串为一个定长为16位随机数的字符串,如产生的随机数为:rand=“ABDGH1598L#%87*K”;系统将接收到的随机数作为一个密钥种子,生成一个对称密钥,如生成一个AES_128的对称密钥:byte[]Skey=[126,8,-44,-75,-107,-94,48,-94,29,-95,-28,72,122,99,-86,125];利用接收到的另一程序代码将对称密钥的字节数组转换成16进制的作为盐值的第一字符串,将第一字符串与预设密码连接形成第一密码值,通过对所述第一密码值进行hash运算得到加密值,其中,在一实施例中,将作为盐值(Salt)的第一字符串作为前缀(或者作为后缀)与密码Password连接形成第一密码值,即可得到PlanText=Salt&Password(或者PlanText=Password&Salt);再通过对第一密码值进行hash运算获取到对应的加密函数,EncryptText=Hash加密函数(PlanText)。
在本实施例中,利用生成的第一随机字符串,进行hash(哈希)运算,并利用获取到的该哈希值作为种子,通过随机数算法的安全随机数生成器,获取生成的随机源初始化密钥生成器,使用生成的密钥生成器产生一个AES_128的对称密钥,通过该对称密钥的16进制表示的字符串作为盐值,长度变为原来的两倍,随机性也相应提高。
盐值是在密码哈希(hash)运算过程中添加的额外的随机值,如,用户的ID就可以作为盐值,来进行hash,生产密文,进而,可以做到密码保护的目的。盐(Salt),在密码学中,是指通过在密码任意固定位置插入特定的字符串,让散列后的结果和使用原始密码的散列结果不相符,这种过程称之为“加盐”。安全因素通常情况下,当字段经过散列处理(如MD5),会生成一段散列值,而散列后的值一般是无法通过特定算法得到原始字段的。但是某些情况,比如一个大型的彩虹表,通过在表中搜索该MD5值,很有可能在极短的时间内找到该散列值对应的真实字段内容。加盐后的散列值,可以极大的降低由于用户数据被盗而带来的密码泄漏风险,即使通过彩虹表寻找到了散列后的数值所对应的原始内容,但是由于经过了加盐,插入的字符串扰乱了真正的密码,使得获得真实密码的概率大大降低。
在一实施例中,所述将所述对称密钥转换成十六进制的第一字符串的步骤S3,包括:
步骤S31,接收用户设置的用于将所述对称密钥转换成所述第一字符串的第二代码,其中,所述第二代码为将所述对称秘钥转换成对应的所述第一字符串的代码程序;
步骤S32,依据所述第二代码,将所述对称密钥转换成十六进制的所述第一字符串。
以上步骤中,接收到用户设置的第二代码,所述第二代码用于将对称密钥转换成第一字符串的代码程序,其中,该代码程序为用户编写的代码程序,用户根据预设的转换格式编写所需的代码程序,即编写出上述第二代码,依据第二代码,将对称密钥转换成作为盐值的16进制的第一字符串,如在一具体实施例中,预设作为盐值salt=“7E08D4B595A230A21DA1E4487A63AA7D”;将对称密钥(Skey)转换成16进制表示(toHex(Skey))的第一字符串,作为盐值Salt,其中,第一字符串(Hex函数)可以通过在数字前面添加前缀&H来表示十六进制数。例如,在十六进制计数法中,&H10表示十进制数16。
在一实施例中,所述将所述第一随机字符串作为密钥种子生成对称密钥的步骤S2,包括:
步骤S21,通过信息摘要算法对生成的所述第一随机字符串进行hash运算,得到第一hash值;
步骤S22,将所述第一hash值作为密钥种子,生成AES_128的对称密钥。
以上步骤中,系统将生成的随机字符串,通过信息摘要算法“SAH-256”做hash(哈希)运算,得到哈希值byte[]seed,将该哈希值seed作为种子,通过构造随机数算法的安全随机数生成器(RNG)。SecureRandom securerandom=new SecureRandom(seed);使用指定的随机源初始化密钥生成器,使其具有确定的密钥大小。生成方式如下:
(1)、KeyGenerator kgen=KeyGenerator.getInstance("AES");
通过Java jdk自带的KeyGenerator产生一个密钥生成器“kgen”
(2)、kgen.init(128,securerandom);
利用上述生成的随机数,对密钥生成器“kgen”进行初始化
(3)、SecretKey secretKey=kgen.generateKey();
通过初始化的密钥生成器,生成一个AES_128的对称密钥:
(4)、byte[]enCodeFormat=secretKey.getEncoded();
SecretKeySpec key=new SecretKeySpec(enCodeFormat,"AES");
byte[]Skey=key.getEncoded()。
获取对称密钥的比特值“Skey”
通过Java jdk自带的KeyGenerator产生一个密钥生成器“kgen”,利用上述方式生成随机数,并对密钥生成器“kgen”进行初始化,通过利用初始化的密钥生成器,生成对应的对称密钥,进而获取对称密钥的比特值“Skey”;即利用随机字符串,进行哈希运算,利用该哈希值作为种子,构造一个实现默认随机数算法的安全随机数生成器,利用生成的随机源初始化密钥生成器,使用生成的密钥生成器产生一个AES_128的对称密钥,利用该对称密钥的16进制表示的字符串作为盐值,长度变为原来的两倍,随机性也相应提高。
在一实施例中,所述将所述第一字符串与接收到的预设密码连接形成第一密码值,通过对所述第一密码值进行hash运算得到加密值的步骤S4,包括:
步骤S41,将所述第一字符串作为前缀或者后缀与所述预设密码连接,形成第一密码值;
步骤S42,通过对所述第一密码值进行hash运算,得到对应的加密值。
以上步骤中,在一具体实施例中,将作为盐值的第一字符串作为前缀与预设密码(Password)连接,得到第一密码值PlanText=Salt&Password,对Plantext做hash运算得到EncryptText,EncryptText=Hash加密函数,根据预设的规则,当用户根据规则输入指定的密码即可打开,通过随机字符串产生对称密钥作为盐值,提高了盐值的随机性,通过增加盐值的长度进而提高了盐值的复杂度,利用此种方式进行密码存储,提高了存储密码的强度。
在另一具体实施例中,将作为盐值的第一字符串作为后缀与预设密码(Password)连接,得到第一密码值PlanText=Password&Salt,对Plantext做hash运算得到EncryptText,EncryptText=Hash加密函数,根据预设的规则,当用户根据规则输入指定的密码即可打开,若作为盐值的第一字符串作为后缀与预设密码连接,得到加密函数后,用户会根据预先得到的密码进行打开,通过随机字符串产生对称密钥作为盐值,提高了盐值的随机性,通过增加盐值的长度进而提高了盐值的复杂度,利用此种方式进行密码存储,提高了存储密码的强度。
将作为盐值的第一字符作为前缀与作为后缀分别形成的第一密码值,经过hash运算后得到不一样的加密值,采用两种方式形成的通过增加了盐值的长度从而提高了盐值的复杂度,使的存储密码强度增强。
在另一实施例中,还可以将作为盐值的第一字符既作为前缀也作为后缀同时与预设密码连接,得到第一密码值PlanText=Salt&Password&Salt,同样可以通过hash运算得到对应的加密值作为存储密码,提高存储密码的强度。
在一实施例中,所述将所述对称密钥转换成十六进制的第一字符串的步骤S3之后,包括:
步骤S301,检测作为盐值的所述第一字符串是否包括有数字与字母;
步骤S302,若否,则重新获取新的第一随机字符串,以得到新的第一字符串。
以上步骤中,获取到作为盐值的所述第一字符串中的每一字符,判断所有所述第一字符串是否包含了数字以及字母的字符,其中,字母可以是大写字母,也可以是小写字母,或者大小写混合的字母,若是,则判定作为盐值的第一字符串可以与预设密码连接,若否,则判定作为预设盐值的第一字符串的复杂度低,需重新获取新的第一随机字符串,以便转换获取到新的第一字符串,再次通过检测新的第一字符串,以便获取到包含数字与字母的新的第一字符串,不仅提高了盐值的随机性,且增加了盐值的长度和复杂度,使最终生成的存储密码的强度增强。
在一实施例中,所述依据接收到的第一代码生成第一随机字符串的步骤S1之前,包括:
步骤S101,接收用户设置的用于生成随机字符串的第一代码,以及用户设置的用于登录的所述预设密码。
以上步骤中,系统预先接收到用户编写的用于生成随机字符串的第一代码的代码程序,以及用户设置的用于登录的预设密码,由于预设密码可能会存在一定的安全风险,所以需要通过对预设密码进行加盐,插入的字符串扰乱了真正的密码,使得获得真实密码的概率大大降低。
综上所述,为本申请实施例中提供的数据加密的方法,通过将生成的第一随机字符串作为密钥种子生成对称密钥,并将对称密钥转换成第一字符串,以便与预设密码连接后再进行hash运算后得到加密值,提高盐值的随机性以及增加盐值的长度,进而提高盐值的复杂度,使存储密码的强度增强,降低安全风险。
参照图3,本申请一实施例中还提供了一种数据加密的装置,包括:
第一生成模块10,用于依据接收到的第一代码生成第一随机字符串,其中,所述第一代码为用于生成随机字符串的代码,所述第一随机字符串为定长16位的随机数;
第二生成模块20,用于将所述第一随机字符串作为密钥种子生成对称密钥;
转换模块30,用于将所述对称密钥转换成十六进制的第一字符串;
连接模块40,用于将所述第一字符串与接收到的预设密码连接形成第一密码值,通过对所述第一密码值进行hash运算得到加密值。
本实施例中,用户预先编写一个用于产生随机字符串的第一代码的代码程序,根据接收到用户设置的第一代码后,第一生成模块10通过接收到的第一代码生成第一随机字符串,该第一随机字符串为一个定长为16位随机数的字符串,如产生的随机数为:rand=“ABDGH1598L#%87*K”;第二生成模块20将接收到的随机数作为一个密钥种子,生成一个对称密钥,如生成一个AES_128的对称密钥:byte[]Skey=[126,8,-44,-75,-107,-94,48,-94,29,-95,-28,72,122,99,-86,125];转换模块30将对称密钥的字节数组转换成16进制的作为盐值的第一字符串,连接模块40将第一字符串与预设密码连接形成第一密码值,通过对所述第一密码值进行hash运算得到加密值,其中,在一实施例中,将作为盐值(Salt)的第一字符串作为前缀(或者作为后缀)与密码Password连接形成第一密码值,即可得到第一密码值PlanText=Salt&Password(或者PlanText=Password&Salt);再通过对第一密码值进行hash运算获取到对应的加密函数,EncryptText=Hash加密函数(PlanText)。
在本实施例中,利用生成的第一随机字符串,进行hash(哈希)运算,并利用获取到的该哈希值作为种子,通过随机数算法的安全随机数生成器,获取生成的随机源初始化密钥生成器,使用生成的密钥生成器产生一个AES_128的对称密钥,通过该对称密钥的16进制表示的字符串作为盐值,长度变为原来的两倍,随机性也相应提高。
盐值是在密码哈希(hash)运算过程中添加的额外的随机值,如,用户的ID就可以作为盐值,来进行hash,生产密文,进而,可以做到密码保护的目的。盐(Salt),在密码学中,是指通过在密码任意固定位置插入特定的字符串,让散列后的结果和使用原始密码的散列结果不相符,这种过程称之为“加盐”。安全因素通常情况下,当字段经过散列处理(如MD5),会生成一段散列值,而散列后的值一般是无法通过特定算法得到原始字段的。但是某些情况,比如一个大型的彩虹表,通过在表中搜索该MD5值,很有可能在极短的时间内找到该散列值对应的真实字段内容。加盐后的散列值,可以极大的降低由于用户数据被盗而带来的密码泄漏风险,即使通过彩虹表寻找到了散列后的数值所对应的原始内容,但是由于经过了加盐,插入的字符串扰乱了真正的密码,使得获得真实密码的概率大大降低。
在本实施例中,所述转换模块30包括:
接收单元,用于接收用户设置的用于将所述对称密钥转换成所述第一字符串的第二代码,其中,所述第二代码为将所述对称秘钥转换成对应的所述第一字符串的代码程序;
转换单元,用于依据所述第二代码,将所述对称密钥转换成十六进制的所述第一字符串。
在本实施例中,接收单元接收到用户设置的第二代码,所述第二代码用于将对称密钥转换成第一字符串的代码程序,其中,该代码程序为用户编写的代码程序,用户根据预设的转换格式编写所需的代码程序,即编写出上述第二代码,转换单元依据所述第二代码,将所述对称密钥转换成作为盐值的16进制的第一字符串,如在一具体实施例中,预设作为盐值的salt=“7E08D4B595A230A21DA1E4487A63AA7D”;将对称密钥(Skey)转换成16进制表示(toHex(Skey))的第一字符串,作为盐值Salt,其中,第一字符串(Hex函数)可以通过在数字前面添加前缀&H来表示十六进制数。例如,在十六进制计数法中,&H10表示十进制数16。
在一实施例中,第二生成模块包括:
第一运算单元,用于通过信息摘要算法对生成的所述第一随机字符串进行hash运算,得到第一hash值;
生成单元,用于将所述第一hash值作为密钥种子,生成AES_128的对称密钥。
在本实施例中,第一运算单元将生成的随机字符串,通过信息摘要算法“SAH-256”做hash(哈希)运算,得到哈希值byte[]seed,生成单元将该哈希值seed作为种子,通过构造随机数算法的安全随机数生成器(RNG)。SecureRandom securerandom=newSecureRandom(seed);使用指定的随机源初始化密钥生成器,使其具有确定的密钥大小。生成方式如下:
(1)、KeyGenerator kgen=KeyGenerator.getInstance("AES");
通过Java jdk自带的KeyGenerator产生一个密钥生成器“kgen”
(2)、kgen.init(128,securerandom);
利用上述生成的随机数,对密钥生成器“kgen”进行初始化
(3)、SecretKey secretKey=kgen.generateKey();
通过初始化的密钥生成器,生成一个AES_128的对称密钥:
(4)、byte[]enCodeFormat=secretKey.getEncoded();
SecretKeySpec key=new SecretKeySpec(enCodeFormat,"AES");
byte[]Skey=key.getEncoded()。
获取对称密钥的比特值“Skey”
通过Java jdk自带的KeyGenerator产生一个密钥生成器“kgen”,利用上述方式生成随机数,并对密钥生成器“kgen”进行初始化,通过利用初始化的密钥生成器,生成对应的对称密钥,进而获取对称密钥的比特值“Skey”;即利用随机字符串,进行哈希运算,利用该哈希值作为种子,构造一个实现默认随机数算法的安全随机数生成器,利用生成的随机源初始化密钥生成器,使用生成的密钥生成器产生一个AES_128的对称密钥,利用该对称密钥的16进制表示的字符串作为盐值,长度变为原来的两倍,随机性也相应提高。
在一实施例中,连接模块40包括:
连接单元,用于将所述第一字符串作为前缀或者后缀与所述预设密码连接,形成第一密码值;
第二运算单元,用于通过对所述第一密码值进行hash运算,得到对应的加密值。
在一具体实施例中,连接单元将作为盐值的第一字符串作为前缀与预设密码(Password)连接,得到第一密码值PlanText=Salt&Password,第二运算单元对Plantext做hash运算得到EncryptText,EncryptText=Hash加密函数,根据预设的规则,当用户根据规则输入指定的密码即可打开,通过随机字符串产生对称密钥作为盐值,提高了盐值的随机性,通过增加盐值的长度进而提高了盐值的复杂度,利用此种方式进行密码存储,提高了存储密码的强度。
在另一具体实施例中,将作为盐值的第一字符串作为后缀与预设密码(Password)连接,得到第一密码值PlanText=Password&Salt,对Plantext做hash运算得到EncryptText,EncryptText=Hash加密函数,根据预设的规则,当用户根据规则输入指定的密码即可打开,若作为盐值的第一字符串作为后缀与预设密码连接,得到加密函数后,用户会根据预先得到的密码进行打开,通过随机字符串产生对称密钥作为盐值,提高了盐值的随机性,通过增加盐值的长度进而提高了盐值的复杂度,利用此种方式进行密码存储,提高了存储密码的强度。
将作为盐值的第一字符作为前缀与作为后缀分别形成的第一密码值,经过hash运算后得到不一样的加密值,采用两种方式形成的通过增加了盐值的长度从而提高了盐值的复杂度,是的存储密码强度增强。
在另一实施例中,还可以将作为盐值的第一字符既作为前缀也作为后缀同时与预设密码连接,得到第一密码值PlanText=Salt&Password&Salt,同样可以通过hash运算得到对应的加密值作为存储密码,提高存储密码的强度。
在一实施例中,数据加密的装置包括:
检测模块,用于检测作为盐值的所述第一字符串是否包括有数字与字母;
执行模块,用于若否,则重新获取新的第一随机字符串,以得到新的第一字符串。
在实施例中,获取到作为盐值的所述第一字符串中的每一字符,检测模块检测所有所述第一字符串是否包含了数字以及字母的字符,其中,字母可以是大写字母,也可以是小写字母,或者大小写混合的字母,执行模块获取到若是,则判定作为盐值的第一字符串可以与预设密码连接,若否,则判定作为预设盐值的第一字符串的复杂度低,需重新获取新的第一随机字符串,以便转换获取到新的第一字符串,再次通过检测新的第一字符串,以便获取到包含数字与字母的新的第一字符串,不仅提高了盐值的随机性,且增加了盐值的长度和复杂度,使最终生成的存储密码的强度增强。
在一实施例中,数据加密的装置包括:
接收模块,用于接收用户设置的用于生成随机字符串的第一代码,以及用户设置的用于登录的所述预设密码。
在本实施例中,接收模块预先接收到用户编写的用于生成随机字符串的第一代码的代码程序,以及用户设置的用于登录的预设密码,由于预设密码可能会存在一定的安全风险,所以需要通过对预设密码进行加盐,插入的字符串扰乱了真正的密码,使得获得真实密码的概率大大降低。
综上所述,为本申请实施例中提供的数据加密的装置,通过将生成的第一随机字符串作为密钥种子生成对称密钥,并将对称密钥转换成第一字符串,以便与预设密码连接后再进行hash运算后得到加密值,提高盐值的随机性以及增加盐值的长度,进而提高盐值的复杂度,使存储密码的强度增强,降低安全风险。
参照图3,本申请实施例中还提供一种计算机设备,该计算机设备可以是服务器,其内部结构可以如图3所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设计的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于第一代码、第二代码等数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种数据加密的方法。
上述处理器执行上述数据加密的方法,包括的步骤:
依据接收到的第一代码生成第一随机字符串,其中,所述第一代码为用于生成随机字符串的代码,所述第一随机字符串为定长16位的随机数;
将所述第一随机字符串作为密钥种子生成对称密钥;
将所述对称密钥转换成十六进制的第一字符串;
将所述第一字符串与接收到的预设密码连接形成第一密码值,通过对所述第一密码值进行hash运算得到加密值。
在一实施例中,所述处理器将所述对称密钥转换成十六进制的第一字符串的步骤,包括:
接收用户设置的用于将所述对称密钥转换成所述第一字符串的第二代码,其中,所述第二代码为将所述对称秘钥转换成对应的所述第一字符串的代码程序;
依据所述第二代码,将所述对称密钥转换成十六进制的所述第一字符串。
在一实施例中,所述处理器将所述第一随机字符串作为密钥种子生成对称密钥的步骤,包括:
通过信息摘要算法对生成的所述第一随机字符串进行hash运算,得到第一hash值;
将所述第一hash值作为密钥种子,生成AES_128的对称密钥。
在一实施例中,所述处理器将所述第一字符串与接收到的预设密码连接形成第一密码值,通过对所述第一密码值进行hash运算得到加密值的步骤,包括:
将所述第一字符串作为前缀或者后缀与所述预设密码连接,形成第一密码值;
通过对所述第一密码值进行hash运算,得到对应的加密值。
在一实施例中,所述处理器将所述对称密钥转换成十六进制的第一字符串的步骤之后,包括:
检测作为盐值的所述第一字符串是否包括有数字与字母;
若否,则重新获取新的第一随机字符串,以得到新的第一字符串。
在一实施例中,所述处理器依据接收到的第一代码生成第一随机字符串的步骤之前,包括:
接收用户设置的用于生成随机字符串的第一代码,以及用户设置的用于登录的所述预设密码。
本领域技术人员可以理解,图3中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定。
本申请一实施例还提供一种计算机存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现一种数据加密的方法,应用于密码加密,具体为:
依据接收到的第一代码生成第一随机字符串,其中,所述第一代码为用于生成随机字符串的代码,所述第一随机字符串为定长16位的随机数;
将所述第一随机字符串作为密钥种子生成对称密钥;
将所述对称密钥转换成十六进制的第一字符串;
将所述第一字符串与接收到的预设密码连接形成第一密码值,通过对所述第一密码值进行hash运算得到加密值。
在一实施例中,所述处理器将所述对称密钥转换成十六进制的第一字符串的步骤,包括:
接收用户设置的用于将所述对称密钥转换成所述第一字符串的第二代码,其中,所述第二代码为将所述对称秘钥转换成对应的所述第一字符串的代码程序;
依据所述第二代码,将所述对称密钥转换成十六进制的所述第一字符串。
在一实施例中,所述处理器将所述第一随机字符串作为密钥种子生成对称密钥的步骤,包括:
通过信息摘要算法对生成的所述第一随机字符串进行hash运算,得到第一hash值;
将所述第一hash值作为密钥种子,生成AES_128的对称密钥。
在一实施例中,所述处理器将所述第一字符串与接收到的预设密码连接形成第一密码值,通过对所述第一密码值进行hash运算得到加密值的步骤,包括:
将所述第一字符串作为前缀或者后缀与所述预设密码连接,形成第一密码值;
通过对所述第一密码值进行hash运算,得到对应的加密值。
在一实施例中,所述处理器将所述对称密钥转换成十六进制的第一字符串的步骤之后,包括:
检测作为盐值的所述第一字符串是否包括有数字与字母;
若否,则重新获取新的第一随机字符串,以得到新的第一字符串。
在一实施例中,所述处理器依据接收到的第一代码生成第一随机字符串的步骤之前,包括:
接收用户设置的用于生成随机字符串的第一代码,以及用户设置的用于登录的所述预设密码。
综上所述,为本申请实施例中提供的数据加密的方法、装置、计算机设备和存储介质,通过将生成的第一随机字符串作为密钥种子生成对称密钥,并将对称密钥转换成第一字符串,以便与预设密码连接后再进行hash运算后得到加密值,提高盐值的随机性以及增加盐值的长度,进而提高盐值的复杂度,使存储密码的强度增强,降低安全风险。。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储与一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的和实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可以包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM通过多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双速据率SDRAM(SSRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其它变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其它要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
以上所述仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其它相关的技术领域,均同理包括在本申请的专利保护范围内。

Claims (10)

1.一种数据加密的方法,其特征在于,包括以下步骤:
依据接收到的第一代码生成第一随机字符串,其中,所述第一代码为用于生成随机字符串的代码,所述第一随机字符串为定长16位的随机数;
将所述第一随机字符串作为密钥种子生成对称密钥;
将所述对称密钥转换成十六进制的第一字符串;
将所述第一字符串与接收到的预设密码连接形成第一密码值,通过对所述第一密码值进行hash运算得到加密值。
2.根据权利要求1所述的数据加密的方法,其特征在于,所述将所述对称密钥转换成十六进制的第一字符串的步骤,包括:
接收用户设置的用于将所述对称密钥转换成所述第一字符串的第二代码,其中,所述第二代码为将所述对称秘钥转换成对应的所述第一字符串的代码程序;
依据所述第二代码,将所述对称密钥转换成十六进制的所述第一字符串。
3.根据权利要求1所述的数据加密的方法,其特征在于,所述将所述第一随机字符串作为密钥种子生成对称密钥的步骤,包括:
通过信息摘要算法对生成的所述第一随机字符串进行hash运算,得到第一hash值;
将所述第一hash值作为密钥种子,生成AES_128的对称密钥。
4.根据权利要求1所述的数据加密的方法,其特征在于,所述将所述第一字符串与接收到的预设密码连接形成第一密码值,通过对所述第一密码值进行hash运算得到加密值的步骤,包括:
将所述第一字符串作为前缀或者后缀与所述预设密码连接,形成所述第一密码值;
通过对所述第一密码值进行hash运算,得到对应的加密值。
5.根据权利要求1所述的数据加密的方法,其特征在于,所述将所述对称密钥转换成十六进制的第一字符串的步骤之后,包括:
检测作为盐值的所述第一字符串是否包括有数字与字母;
若否,则重新获取新的第一随机字符串,以得到新的第一字符串。
6.根据权利要求1所述的数据加密的方法,其特征在于,所述依据接收到的第一代码生成第一随机字符串的步骤之前,包括:
接收用户设置的用于生成随机字符串的第一代码,以及用户设置的用于登录的所述预设密码。
7.一种数据加密的装置,其特征在于,包括:
第一生成模块,用于依据接收到的第一代码生成第一随机字符串,其中,所述第一代码为用于生成随机字符串的代码,所述第一随机字符串为定长16位的随机数;
第二生成模块,用于将所述第一随机字符串作为密钥种子生成对称密钥;
转换模块,用于将所述对称密钥转换成十六进制的第一字符串;
连接模块,用于将所述第一字符串与接收到的预设密码连接形成第一密码值,通过对所述第一密码值进行hash运算得到加密值。
8.根据权利要求7所述的数据加密的装置,其特征在于,所述转换模块包括:
接收单元,用于接收用户设置的用于将所述对称密钥转换成所述第一字符串的第二代码;
转换单元,用于依据所述第二代码,将所述对称密钥转换成十六进制的所述第一字符串。
9.一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6中任一项所述方法的步骤。
10.一种计算机存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
CN201910463613.1A 2019-05-30 2019-05-30 数据加密的方法、装置、计算机设备和存储介质 Active CN110351077B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910463613.1A CN110351077B (zh) 2019-05-30 2019-05-30 数据加密的方法、装置、计算机设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910463613.1A CN110351077B (zh) 2019-05-30 2019-05-30 数据加密的方法、装置、计算机设备和存储介质

Publications (2)

Publication Number Publication Date
CN110351077A true CN110351077A (zh) 2019-10-18
CN110351077B CN110351077B (zh) 2023-05-02

Family

ID=68174510

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910463613.1A Active CN110351077B (zh) 2019-05-30 2019-05-30 数据加密的方法、装置、计算机设备和存储介质

Country Status (1)

Country Link
CN (1) CN110351077B (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112636911A (zh) * 2021-01-05 2021-04-09 杜瑞峰 一种非联网设备接龙取值变函数序列密码生成方式
CN112671841A (zh) * 2020-12-10 2021-04-16 清研灵智信息咨询(北京)有限公司 基于微服务技术架构的数据安全管理方法及系统
CN112669141A (zh) * 2020-12-31 2021-04-16 深圳市辰宝信息服务有限公司 基于区块链智能合约机制的大宗商品的仓单质押方法
CN112784292A (zh) * 2019-11-07 2021-05-11 大唐移动通信设备有限公司 一种配置文件的处理方法和装置
CN113014380A (zh) * 2021-02-08 2021-06-22 深圳市亿图软件有限公司 文件数据的密码管理方法、装置、计算机设备及存储介质
CN113076554A (zh) * 2021-03-12 2021-07-06 广西东信易联科技有限公司 一种基于区块链的体检数据安全存储方法
CN113434852A (zh) * 2021-07-23 2021-09-24 网易(杭州)网络有限公司 密码处理方法、密码验证方法及装置、介质及电子设备
WO2022033433A1 (zh) * 2020-08-10 2022-02-17 广州以太教育科技有限责任公司 一种机密参数的生成方法及装置
CN114124366A (zh) * 2020-08-31 2022-03-01 华为技术有限公司 一种可信芯片的密钥生成方法及相关设备
CN115086008A (zh) * 2022-06-13 2022-09-20 北京信长城科技发展有限公司 密码安全保护的实现方法、装置、存储介质及电子设备

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8751804B1 (en) * 2011-06-30 2014-06-10 Decho Corporation Controlling access to data within encrypted copies of files using salt parameters
JP2014167757A (ja) * 2013-02-28 2014-09-11 Furyu Kk 情報管理システム、管理サーバ、処理方法、および制御プログラム
US20150326395A1 (en) * 2012-12-06 2015-11-12 Deutsche Post Ag Method for setting up a secure connection between clients
CN107306181A (zh) * 2016-04-18 2017-10-31 杭州云沣科技有限公司 鉴权系统及其鉴权信息的加密、验证方法与装置
CN107689869A (zh) * 2016-08-05 2018-02-13 华为技术有限公司 用户口令管理的方法和服务器
WO2018047120A1 (en) * 2016-09-10 2018-03-15 Singanamala Prahlad P A system and method for data block modification detection and authentication codes
CN108270771A (zh) * 2017-12-22 2018-07-10 中国电子科技集团公司第三十研究所 一种shellcode编解码变形方法
CN109547218A (zh) * 2019-01-18 2019-03-29 北京工业大学 一种改进bip协议的联盟链节点秘钥分配及备份系统

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8751804B1 (en) * 2011-06-30 2014-06-10 Decho Corporation Controlling access to data within encrypted copies of files using salt parameters
US20150326395A1 (en) * 2012-12-06 2015-11-12 Deutsche Post Ag Method for setting up a secure connection between clients
JP2014167757A (ja) * 2013-02-28 2014-09-11 Furyu Kk 情報管理システム、管理サーバ、処理方法、および制御プログラム
CN107306181A (zh) * 2016-04-18 2017-10-31 杭州云沣科技有限公司 鉴权系统及其鉴权信息的加密、验证方法与装置
CN107689869A (zh) * 2016-08-05 2018-02-13 华为技术有限公司 用户口令管理的方法和服务器
WO2018047120A1 (en) * 2016-09-10 2018-03-15 Singanamala Prahlad P A system and method for data block modification detection and authentication codes
CN108270771A (zh) * 2017-12-22 2018-07-10 中国电子科技集团公司第三十研究所 一种shellcode编解码变形方法
CN109547218A (zh) * 2019-01-18 2019-03-29 北京工业大学 一种改进bip协议的联盟链节点秘钥分配及备份系统

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112784292A (zh) * 2019-11-07 2021-05-11 大唐移动通信设备有限公司 一种配置文件的处理方法和装置
CN112784292B (zh) * 2019-11-07 2024-01-30 大唐移动通信设备有限公司 一种配置文件的处理方法和装置
WO2022033433A1 (zh) * 2020-08-10 2022-02-17 广州以太教育科技有限责任公司 一种机密参数的生成方法及装置
CN114124366A (zh) * 2020-08-31 2022-03-01 华为技术有限公司 一种可信芯片的密钥生成方法及相关设备
CN112671841A (zh) * 2020-12-10 2021-04-16 清研灵智信息咨询(北京)有限公司 基于微服务技术架构的数据安全管理方法及系统
CN112669141A (zh) * 2020-12-31 2021-04-16 深圳市辰宝信息服务有限公司 基于区块链智能合约机制的大宗商品的仓单质押方法
CN112636911B (zh) * 2021-01-05 2022-10-04 杜瑞峰 一种非联网设备接龙取值变函数序列密码生成方式
CN112636911A (zh) * 2021-01-05 2021-04-09 杜瑞峰 一种非联网设备接龙取值变函数序列密码生成方式
CN113014380A (zh) * 2021-02-08 2021-06-22 深圳市亿图软件有限公司 文件数据的密码管理方法、装置、计算机设备及存储介质
CN113076554A (zh) * 2021-03-12 2021-07-06 广西东信易联科技有限公司 一种基于区块链的体检数据安全存储方法
CN113434852A (zh) * 2021-07-23 2021-09-24 网易(杭州)网络有限公司 密码处理方法、密码验证方法及装置、介质及电子设备
CN115086008A (zh) * 2022-06-13 2022-09-20 北京信长城科技发展有限公司 密码安全保护的实现方法、装置、存储介质及电子设备
CN115086008B (zh) * 2022-06-13 2024-02-09 北京信长城科技发展有限公司 密码安全保护的实现方法、装置、存储介质及电子设备

Also Published As

Publication number Publication date
CN110351077B (zh) 2023-05-02

Similar Documents

Publication Publication Date Title
CN110351077A (zh) 数据加密的方法、装置、计算机设备和存储介质
Krawczyk et al. HMAC: Keyed-hashing for message authentication
US9537657B1 (en) Multipart authenticated encryption
US8699703B2 (en) System and method for pseudo-random polymorphic tree construction
WO2010132695A1 (en) System and method for securely identifying and authenticating devices in a symmetric encryption system
US9485226B2 (en) Method for including an implicit integrity or authenticity check into a white-box implementation
CN107491317A (zh) 一种基于异构加速平台的aes对称加解密方法及系统
Sleem et al. TestU01 and Practrand: Tools for a randomness evaluation for famous multimedia ciphers
CN111010266B (zh) 消息的加解密、读写方法、装置、计算机设备和存储介质
CN112242898B (zh) 一种针对洋葱网络系统共识文件的加密方法
JP2017187724A (ja) 暗号化装置、暗号化方法、復号化装置、及び復号化方法
CN111066077A (zh) 加密装置、加密方法、解密装置以及解密方法
CN116894273B (zh) 基于异或和求余的文件加密方法、解密方法、设备及介质
US9594918B1 (en) Computer data protection using tunable key derivation function
US7809130B1 (en) Password recovery system and method
EP3214567B1 (en) Secure external update of memory content for a certain system on chip
Elganzoury et al. A new secure one-time password algorithm for mobile applications
Hwang et al. IAR‐CTR and IAR‐CFB: integrity aware real‐time based counter and cipher feedback modes
CN112507357B (zh) 一种基于密钥生成器的多级接口设计方法
CN101364868B (zh) 基于广义信息域的伪随机码发生器及其发生方法
Banga et al. Protecting user credentials against SQL injection through cryptography and image steganography
Sri et al. Concealing the Data Using Cryptography
Hossain et al. An algorithm for securing user credentials by combining Encryption and Hashing method
Budzik et al. Encryption-based Security in Wearable Devices
CN118233095B (zh) 一种敏感信息保护方法及系统

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
GR01 Patent grant
GR01 Patent grant