一种密码保护方法及装置与流程

文档序号:11147365阅读:351来源:国知局
一种密码保护方法及装置与制造工艺

本发明实施例涉及信息安全技术领域,具体涉及一种密码保护方法及装置。



背景技术:

现有的账号系统,一般会将密码明文存储,这种存储方式很容易导致密码泄露,给用户带来极大的安全隐患。为保障密码安全,有些账号系统会将密码采用消息摘要算法第五版(Message Digest Algorithm 5,MD5)加密后存储,而经证实,MD5加密算法可以被破解,且MD5算法无法防止碰撞,拿到MD5密码后,破解只是时间的问题,即这种方式还是无法保障密码的安全,密码遭遇泄露的风险还是很大。



技术实现要素:

有鉴于此,本发明实施例提供了一种密码保护方法及装置,能够保障密码安全,降低密码被泄露的风险。

本发明实施例提供密码保护方法,包括:

获取用户标识及原始明文密码;

利用预设盐值对所述原始明文密码加盐得到原始密钥;

将所述原始密钥作为哈希消息认证码HMAC运算的加密密钥,将安全哈希算法SHA作为HMAC运算的加密用散列函数,进行HMAC运算,得到原始密文密码;

将所述用户标识与所述原始密文密码对应存储在数据库中。

本发明实施例提供密码保护装置,包括:

获取单元,用于获取用户标识及原始明文密码;

加盐单元,用于利用预设盐值对所述原始明文密码加盐得到原始密钥;

第一加密单元,用于将所述原始密钥作为哈希消息认证码HMAC运算的加密密钥,将安全哈希算法SHA作为HMAC运算的加密用散列函数,进行HMAC运算,得到原始密文密码;

存储单元,用于将所述用户标识与所述原始密文密码对应存储在数据库中。

本发明实施例中,在获取用户标识及原始明文密码之后,会利用预设盐值对所述原始明文密码加盐得到原始密钥,然后将所述原始密钥作为HMAC运算的加密密钥,将SHA作为HMAC运算的加密用散列函数,进行HMAC运算,得到原始密文密码,最后将所述用户标识与所述原始密文密码对应存储在数据库中。经验证,SHA算法本身就很难被破解,而将原始明文密码加盐之后得到的原始密钥已相当复杂,所以以所述原始密钥为加密密钥,以所述SHA作为加密用散列函数进行HMAC运算得到的原始密文密码,即使穷举,也很难破解出原始明文密码,因而本发明实施例的方法,能够保障密码安全,降低密码被泄露的风险。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例所提供的密码保护方法的一个场景示意图;

图2是本发明实施例所提供的密码保护方法的一个流程示意图;

图3a是本发明实施例所提供的一个注册流程示意图;

图3b是本发明实施例所提供的一个原始密文密码生成过程示意图;

图4a是本发明实施例所提供的一个验证流程示意图;

图4b是本发明实施例所提供的一个实时密文密码生成过程示意图;

图5是本发明实施例所提供的密码保护装置的一个结构示意图;

图6是本发明实施例所提供的密码保护装置的另一结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

由于现有的密码存储方法,存在很大的密码泄露风险,无法保障密码安全。因而,本发明实施例提供了一种密码保护方法及装置,能够保障密码安全,降低密码被泄露的风险。本发明实施例提供的密码保护方法可实现于密码保护装置中,密码保护装置可为服务器。本发明实施例密码保护方法一个具体实施场景可如图1所示,包括客户端与服务器,服务器可以从客户端获取用户标识及原始明文密码,利用预设盐值对所述原始明文密码加盐得到原始密钥,然后将所述原始密钥作为哈希消息认证码(Hash-based Message Authentication Code,HMAC)运算的加密密钥,将安全哈希算法(Secure Hash Algorithm,SHA)作为HMAC运算的加密用散列函数,进行HMAC运算,得到原始密文密码,最后将所述用户标识与所述原始密文密码对应存储在数据库中。经验证,SHA算法本身就很难被破解,而将原始明文密码加盐之后得到的原始密钥已相当复杂,所以以所述原始密钥为加密密钥,以所述SHA作为加密用散列函数进行HMAC运算得到的原始密文密码,即使穷举,也很难破解出原始明文密码,因而本发明实施例的方法,能够保障密码安全,降低密码被泄露的风险。

以下分别进行详细说明,需说明的是,以下实施例的序号不作为对实施例优选顺序的限定。

实施例一

如图2所示,本实施例的方法包括以下步骤:

步骤201、获取用户标识及原始明文密码;

具体实现中,可以在客户端注册时,服务器从客户端获取用户标识及原始明文密码,用户标识也可以称为用户名、注册账号等,原始明文密码即注册时客户端提供的注册密码。

客户端可以将用户标识及原始明文密码直接携带在注册请求中,服务器直接从注册请求中获取用户标识及原始明文密码。但是,这种方式,密码会以明文的形式在客户端与服务器之间传递,容易被第三方截获,导致密码泄露。因而,本实施例中,客户端还可以将原始明文密码加密,将加密后的原始明文密码及用户标识携带在注册请求中发送给服务器,具体如下:

客户端可以先采用不对称加密算法RSA公钥加密原始明文密码,然后采用安全版超文本传输协议(Hyper Text Transfer Protocol over Secure Socket Layer,HTTPS)公钥对加密后的所述原始明文密码再次加密得到第一密文,将第一密文及用户标识携带在注册请求中发送给服务器。服务器接收到所述注册请求之后,从注册请求中提取用户标识及第一密文,采用HTTPS私钥解密所述第一密文,然后采用RSA私钥对解密后的所述第一密文再次解密以获取所述原始明文密码。这样,密码以密文的形式在客户端与服务器之间传递,即使被第三方截获,第三方也无法轻易得到原始明文密码,进一步保障了密码安全。

步骤202、利用预设盐值对所述原始明文密码加盐得到原始密钥;

所谓“加盐”指的是,通过在密码任意固定位置插入特定的字符串,让散列后的结果和使用原始密码的散列结果不相符,以保障密码的安全。

在执行步骤202之前,需要先获取预设盐值,预设盐值可以随机生成,当然也可以按照预设规则生成,下面介绍本实施例提供的,按照预设规则生成预设盐值的方法,如下:

(1)生成随机盐值和随机数。

随机盐值可以是任意方式生成的一个字符串,字符串长度可根据实际需求自定义,为兼顾安全性及加密效率,本实施例中,代表随机盐值的字符串的长度可以取32位,例如随机盐值可以为:fw14Qpl79E6z4&q3!tD0#D2lVT):UNT。随机数可以使用马特赛特旋转演算法(Mersenne Twister)生成,例如随机数可以为:2101077161。当然,上述随机盐值及随机数仅为举例,并不构成对具体实施的限定。

(2)将所述随机盐值作为HMAC运算的加密密钥,将SHA作为HMAC运算的加密用散列函数,使用所述随机数进行HMAC运算,得到所述预设盐值。

HMAC是密钥相关的哈希运算消息认证码,HMAC运算利用哈希算法,以一个密钥和一个消息为输入,生成一个消息摘要作为输出。定义HMAC需要一个加密用散列函数和一个加密密钥。具体在本实施例中,可以以所述随机盐值作为HMAC运算的加密密钥,将SHA作为HMAC运算的加密用散列函数,使用所述随机数进行HMAC运算,得到所述预设盐值。

SHA是一个密码散列函数家族,是联邦信息处理标准(Federal Information Processing Standards,FIPS)所认证的安全散列算法。SHA是能计算出一个数字消息所对应的,长度固定的字符串(又称消息摘要)的算法,且若输入的消息不同,将得到不同的字符串,且得到不同字符串的概率很高。SHA算法之所以称作“安全”,主要基于以下两点:

第一,由消息摘要反推原输入消息,从计算理论上来说是很困难的;

第二,想要使两组不同的消息对应到相同的消息摘要,从计算理论上来说也是很困难的,对输入消息的任何变动,都有很高的概率导致其产生的消息摘要迥异。

SHA家族包括SHA-1、SHA-224、SHA-256、SHA-384、SHA-512和SHA3,由美国国家安全局(National Security Agency,NSA)所设计,并由美国国家标准与技术研究院(National Institute of Standards and Technology,NIST)发布,是美国的政府标准。其中,SHA-224、SHA-256、SHA-384、SHA-512有时并称为SHA-2。

为了兼顾安全性与计算代价,本实施例中,优选SHA-2类算法作为HMAC运算的加密用散列函数。

在得到所述预设盐值之后,可以利用所述预设盐值对所述原始明文密码加盐得到原始密钥。

步骤203、将所述原始密钥作为哈希消息认证码HMAC运算的加密密钥,将安全哈希算法SHA作为HMAC运算的加密用散列函数,进行HMAC运算,得到原始密文密码;

步骤204、将所述用户标识与所述原始密文密码对应存储在数据库中。

后续,在客户端向服务器发送验证请求时,服务器可以使用数据库中存储的原始密文密码对客户端进行验证,以识别客户端是否为合法用户。

本实施例中,在获取用户标识及原始明文密码之后,会利用预设盐值对所述原始明文密码加盐得到原始密钥,然后将所述原始密钥作为HMAC运算的加密密钥,将SHA作为HMAC运算的加密用散列函数,进行HMAC运算,得到原始密文密码,最后将所述用户标识与所述原始密文密码对应存储在数据库中。经验证,SHA算法本身就很难被破解,而将原始明文密码加盐之后得到的原始密钥已相当复杂,所以以所述原始密钥为加密密钥,以所述SHA作为加密用散列函数进行HMAC运算得到的原始密文密码,即使穷举,也很难破解出原始明文密码,因而本实施例的方法,能够保障密码安全,降低密码被泄露的风险。

实施例二

实施例一所描述的方法,本实施例将举例作进一步详细说明,本实施例的描述过程将分为两个阶段,即注册阶段与验证阶段。下面先描述注册阶段的流程,如图3a所示,注册阶段包括以下步骤:

步骤301、接收客户端发送的注册请求,注册请求中包括用户标识及第一密文,第一密文由客户端采用预设加密算法加密原始明文密码得到;

用户标识也可以称为用户名、注册账号等,原始明文密码即注册时客户端提供的注册密码。

具体地,客户端可以先采用RSA公钥加密原始明文密码,然后采用HTTPS公钥对加密后的所述原始明文密码再次加密得到第一密文,将第一密文及用户标识携带在注册请求中发送给服务器,服务器接收客户端发送的注册请求。

步骤302、从注册请求中获取用户标识,以及采用与预设加密算法对应的预设解密算法,解密注册请求中包括的第一密文以获取原始明文密码;

服务器接收到所述注册请求之后,可以从所述注册请求中提取用户标识及第一密文,采用HTTPS私钥解密所述第一密文,然后采用RSA私钥对解密后的所述第一密文再次解密以获取所述原始明文密码。这样,密码以密文的形式在客户端与服务器之间传递,即使被第三方截获,第三方也无法轻易得到原始明文密码,进一步保障了密码的安全。

步骤303、生成随机盐值和随机数;

随机盐值可以是任意方式生成的一个字符串,字符串长度可根据实际需求自定义,为兼顾安全性及加密效率,本实施例中,代表随机盐值的字符串长度可以取32位,例如随机盐值可以为:fw14Qpl79E6z4&q3!tD0#D2lVT):UNT。随机数可以使用马特赛特旋转演算法(Mersenne Twister)生成,例如随机数可以为:2101077161。当然,上述随机盐值及随机数仅为举例,并不构成对具体实施的限定。

步骤304、将随机盐值作为HMAC运算的加密密钥,将SHA作为HMAC运算的加密用散列函数,使用所述随机数进行HMAC运算,得到预设盐值;

SHA是一个密码散列函数家族,是联邦信息处理标准FIPS所认证的安全散列算法。SHA算法之所以称作“安全”,主要基于以下两点:

第一,由消息摘要反推原输入消息,从计算理论上来说是很困难的;

第二,想要使两组不同的消息对应到相同的消息摘要,从计算理论上来说也是很困难的,对输入消息的任何变动,都有很高的概率导致其产生的消息摘要迥异。

因而,本实施例采用SHA作为HMAC运算的加密用散列函数。

SHA家族包括SHA-1、SHA-224、SHA-256、SHA-384、SHA-512和SHA3。其中,SHA-224、SHA-256、SHA-384、SHA-512有时并称为SHA-2。为了兼顾安全性与计算代价,本实施例中,优选SHA-2类算法作为HMAC运算的加密用散列函数。

步骤305、利用预设盐值对原始明文密码加盐得到原始密钥;

具体地,可以以:“预设盐值+原始明文密码”这样的拼接串作为原始密钥。

步骤306、将原始密钥作为HMAC运算的加密密钥,将SHA作为HMAC运算的加密用散列函数,进行HMAC运算,得到原始密文密码;

具体生成原始密文密码的过程可参阅图3b的示意图。

步骤307、将用户标识与原始密文密码对应存储在数据库中。

经验证,SHA算法本身就很难被破解,在注册流程中,经两步加盐将原始明文密码变为原始密钥,原始密钥已相当复杂,所以将所述原始密钥作为加密密钥,将所述SHA作为加密用散列函数进行HMAC运算得到的原始密文密码,即使穷举也很难破解出原始明文密码,因而本实施例的方法,能够保障密码安全,降低密码被泄露的风险,特别对防御暴利破解、中间人攻击、劫持和反向解密都有很好的效果。

下面描述验证阶段的流程,如图4a所示,验证阶段包括以下步骤:

步骤401、接收客户端发送的验证请求,验证请求中包括用户标识及第二密文,第二密文由客户端采用预设加密算法加密实时明文密码得到;

具体地,当客户端需要执行某些操作时,可以向服务器发送验证请求,所述操作例如登陆、充值等,此处不作具体限定。实时明文密码,即验证时客户端提供的待验证密码。

具体地,客户端可以先采用RSA公钥加密实时明文密码,然后采用HTTPS公钥对加密后的所述实时明文密码再次加密得到第二密文,将第二密文及用户标识携带在验证请求中发送给服务器,服务器接收客户端发送的验证请求。

步骤402、从验证请求中获取用户标识,采用与预设加密算法对应的预设解密算法,解密验证请求中包括的第二密文以获取实时明文密码;

服务器接收到所述验证请求之后,可以从所述验证请求中提取用户标识及第二密文,采用HTTPS私钥解密所述第二密文,然后采用RSA私钥对解密后的所述第二密文再次解密以获取所述实时明文密码。

步骤403、利用预设盐值对实时明文密码加盐得到实时密钥;

预设盐值即步骤304所得到的预设盐值,具体地,可以以:“预设盐值+实时明文密码”这样的拼接串作为实时密钥。

步骤404、将实时密钥作为HMAC运算的加密密钥,将SHA作为HMAC运算的加密用散列函数,进行HMAC运算,得到实时密文密码;

具体生成实时密文密码的过程可参阅图4b的示意图。

步骤405、从数据库中取出用户标识对应的原始密文密码;

步骤406、判断实时密文密码与原始密文密码是否相同,若相同,则执行步骤407,否则,执行步骤408;

步骤407、确认验证成功;

若验证成功,则允许客户端执行相应的操作。

步骤408、确认验证失败。

若验证成功,则不允许客户端执行相应的操作。

本实施例中,在验证的过程中,客户端与服务器之间传递的都是密文,因而可以防止密码被第三方截获、破解,且验证的时候,直接比对的是实时密码的密文与数据库存储的原始密码的密文,因而能够保障密码安全,降低密码被泄露的风险。

实施例三

为了更好地实施以上方法,本发明实施例还提供一种密码保护装置,如图5所示,本实施例的密码保护装置包括:获取单元501、加盐单元502、第一加密单元503及存储单元504,如下:

(1)获取单元501;

获取单元501,用于获取用户标识及原始明文密码。

具体实现中,获取单元501可以在客户端注册时,从客户端获取用户标识及原始明文密码,用户标识也可以称为用户名、注册账号等,原始明文密码即注册时客户端提供的注册密码。

本实施例的装置还可以包括接收单元,客户端可以将用户标识及原始明文密码直接携带在注册请求中,接收单元接收所述注册请求,获取单元501直接从注册请求中获取用户标识及原始明文密码。但是,这种方式,密码会以明文的形式在客户端与服务器之间传递,容易被第三方截获,导致密码泄露。因而,本实施例中,客户端还可以将原始明文密码加密,将加密后的原始明文密码及用户标识携带在注册请求中发送给服务器,具体如下:

客户端可以先采用不对称加密算法RSA公钥加密原始明文密码,然后采用安全版超文本传输协议(Hyper Text Transfer Protocol over Secure Socket Layer,HTTPS)公钥对加密后的所述原始明文密码再次加密得到第一密文,将第一密文及用户标识携带在注册请求中发送给服务器。接收单元接收到所述注册请求之后,获取单元501可以从所述注册请求中提取用户标识及第一密文,采用HTTPS私钥解密所述第一密文,然后采用RSA私钥对解密后的所述第一密文再次解密以获取所述原始明文密码。这样,密码以密文的形式在客户端与服务器之间传递,即使被第三方截获,第三方也无法轻易得到原始明文密码。

(2)加盐单元502;

加盐单元502,用于利用预设盐值对所述原始明文密码加盐得到原始密钥。

所谓“加盐”指的是,通过在密码任意固定位置插入特定的字符串,让散列后的结果和使用原始密码的散列结果不相符,以保障密码的安全。

在加盐之前,需要先生成预设盐值。预设盐值可以随机生成,当然也可以按照预设规则生成,下面介绍本实施例提供的,按照预设规则生成预设盐值的方法,即本实施例的装置还包括生成单元和第二加密单元,如下:

生成单元,用于生成随机盐值和随机数。

随机盐值可以是任意方式生成的一个字符串,字符串长度可根据实际需求自定义,为兼顾安全性及加密效率,本实施例中,代表随机盐值的字符串长度可以取32位,例如随机盐值可以为:fw14Qpl79E6z4&q3!tD0#D2lVT):UNT。随机数可以使用马特赛特旋转演算法(Mersenne Twister)生成,例如随机数可以为:2101077161。当然,上述随机盐值及随机数仅为举例,并不构成对具体实施的限定。

第二加密单元,用于将所述随机盐值作为HMAC运算的加密密钥,将SHA作为HMAC运算的加密用散列函数,使用所述随机数进行HMAC运算,得到所述预设盐值。

HMAC是密钥相关的哈希运算消息认证码,HMAC运算利用哈希算法,以一个密钥和一个消息为输入,生成一个消息摘要作为输出。定义HMAC需要一个加密用散列函数和一个加密密钥。具体在本实施例中,可以以所述随机盐值作为HMAC运算的加密密钥,将SHA作为HMAC运算的加密用散列函数,使用所述随机数进行HMAC运算,得到所述预设盐值。

SHA是一个密码散列函数家族,是联邦信息处理标准(Federal Information Processing Standards,FIPS)所认证的安全散列算法。SHA为能计算出一个数字消息所对应的,长度固定的字符串(又称消息摘要)的算法,且若输入的消息不同,将得到不同的字符串,且得到不同字符串的概率很高。SHA算法之所以称作“安全”,主要基于以下两点:

第一,由消息摘要反推原输入消息,从计算理论上来说是很困难的;

第二,想要使两组不同的消息对应到相同的消息摘要,从计算理论上来说也是很困难的,对输入消息的任何变动,都有很高的概率导致其产生的消息摘要迥异。

SHA家族包括SHA-1、SHA-224、SHA-256、SHA-384、SHA-512和SHA3,由美国国家安全局(National Security Agency,NSA)所设计,并由美国国家标准与技术研究院(National Institute of Standards and Technology,NIST)发布,是美国的政府标准。其中,SHA-224、SHA-256、SHA-384、SHA-512有时并称为SHA-2。

为了兼顾安全性与计算代价,本实施例中,优选SHA-2类算法作为HMAC运算的加密用散列函数。

在得到所述预设盐值之后,加盐单元502可以利用所述预设盐值对所述原始明文密码加盐得到原始密钥。

(3)第一加密单元503;

第一加密单元503,用于将所述原始密钥作为哈希消息认证码HMAC运算的加密密钥,将安全哈希算法SHA作为HMAC运算的加密用散列函数,进行HMAC运算,得到原始密文密码。

(4)存储单元504;

存储单元504,用于将所述用户标识与所述原始密文密码对应存储在数据库中。

进一步地,所述接收单元还用于,接收所述客户端发送的验证请求,所述验证请求中包括所述用户标识及第二密文,所述第二密文由所述客户端采用所述预设加密算法加密实时明文密码得到。

具体地,当客户端需要执行某些操作时,可以向服务器发送验证请求,所述操作例如登陆、充值等,此处不作具体限定。实时明文密码,即验证时客户端提供的待验证密码。

所述获取单元501还用于,从所述验证请求中获取所述用户标识,采用与所述预设加密算法对应的预设解密算法,解密所述验证请求中包括的所述第二密文以获取所述实时明文密码;

所述加盐单元502还用于,利用所述预设盐值对所述实时明文密码加盐得到实时密钥;

所述第一加密单元503还用于,将所述实时密钥作为HMAC运算的加密密钥,将SHA作为HMAC运算的加密用散列函数,进行HMAC运算,得到实时密文密码;

所述装置还包括:

提取单元,用于从所述数据库中取出所述用户标识对应的所述原始密文密码;

判断单元,用于判断所述实时密文密码与所述原始密文密码是否相同;

确认单元,用于在所述实时密文密码与所述原始密文密码相同时,确认验证成功,验证成功则允许客户端执行相应的操作;在所述实时密文密码与所述原始密文密码不相同时,确认验证失败,验证失败则不允许客户端执行相应的操作。

需要说明的是,上述实施例提供的密码保护装置在实现密码保护时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的密码保护装置与密码保护方法属于同一构思,其具体实现过程详见方法实施例,此处不再赘述。

本实施例中,在获取单元获取用户标识及原始明文密码之后,加盐单元会利用预设盐值对所述原始明文密码加盐得到原始密钥,然后第一加密单元将所述原始密钥作为HMAC运算的加密密钥,将SHA作为HMAC运算的加密用散列函数,进行HMAC运算,得到原始密文密码,最后存储单元将所述用户标识与所述原始密文密码对应存储在数据库中。经验证,SHA算法本身就很难被破解,而将原始明文密码加盐之后得到的原始密钥已相当复杂,所以以所述原始密钥为加密密钥,以所述SHA作为加密用散列函数进行HMAC运算得到的原始密文密码,即使穷举,也很难破解出原始明文密码,因而本实施例的装置,能够保障密码安全,降低密码被泄露的风险,特别对防御暴利破解、中间人攻击、劫持和反向解密都有很好的效果。

实施例四

本发明实施例还提供一种密码保护装置,如图6所示,其示出了本发明实施例所涉及的装置的结构示意图,具体来讲:

该装置可以包括一个或者一个以上处理核心的处理器601、一个或一个以上计算机可读存储介质的存储器602、射频(Radio Frequency,RF)电路603、电源604、输入单元605、以及显示单元606等部件。本领域技术人员可以理解,图6中示出的装置结构并不构成对装置的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:

处理器601是该装置的控制中心,利用各种接口和线路连接整个装置的各个部分,通过运行或执行存储在存储器602内的软件程序和/或模块,以及调用存储在存储器602内的数据,执行装置的各种功能和处理数据,从而对装置进行整体监控。可选的,处理器601可包括一个或多个处理核心;优选的,处理器601可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器601中。

存储器602可用于存储软件程序以及模块,处理器601通过运行存储在存储器602的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器602可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据装置的使用所创建的数据等。此外,存储器602可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器602还可以包括存储器控制器,以提供处理器601对存储器602的访问。

RF电路603可用于收发信息过程中,信号的接收和发送,特别地,将基站的下行信息接收后,交由一个或者一个以上处理器601处理;另外,将涉及上行的数据发送给基站。通常,RF电路603包括但不限于天线、至少一个放大器、调谐器、一个或多个振荡器、用户身份模块(SIM)卡、收发信机、耦合器、低噪声放大器(LNA,Low Noise Amplifier)、双工器等。此外,RF电路603还可以通过无线通信与网络和其他设备通信。所述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(GSM,Global System of Mobile communication)、通用分组无线服务(GPRS,General Packet Radio Service)、码分多址(CDMA,Code Division Multiple Access)、宽带码分多址(WCDMA,Wideband Code Division Multiple Access)、长期演进(LTE,Long Term Evolution)、电子邮件、短消息服务(SMS,Short Messaging Service)等。

装置还包括给各个部件供电的电源604(比如电池),优选的,电源604可以通过电源管理系统与处理器601逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源604还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。

该装置还可包括输入单元605,该输入单元605可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。具体地,在一个具体的实施例中,输入单元605可包括触敏表面以及其他输入设备。触敏表面,也称为触摸显示屏或者触控板,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触敏表面上或在触敏表面附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触敏表面可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器601,并能接收处理器601发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触敏表面。除了触敏表面,输入单元605还可以包括其他输入设备。具体地,其他输入设备可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。

该装置还可包括显示单元606,该显示单元606可用于显示由用户输入的信息或提供给用户的信息以及装置的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示单元606可包括显示面板,可选的,可以采用液晶显示器(LCD,Liquid Crystal Display)、有机发光二极管(OLED,Organic Light-Emitting Diode)等形式来配置显示面板。进一步的,触敏表面可覆盖显示面板,当触敏表面检测到在其上或附近的触摸操作后,传送给处理器601以确定触摸事件的类型,随后处理器601根据触摸事件的类型在显示面板上提供相应的视觉输出。虽然在图6中,触敏表面与显示面板是作为两个独立的部件来实现输入和输入功能,但是在某些实施例中,可以将触敏表面与显示面板集成而实现输入和输出功能。

尽管未示出,装置还可以包括摄像头、蓝牙模块等,在此不再赘述。具体在本实施例中,装置中的处理器601会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器602中,并由处理器601来运行存储在存储器602中的应用程序,从而实现各种功能,如下:

获取用户标识及原始明文密码;

利用预设盐值对所述原始明文密码加盐得到原始密钥;

将所述原始密钥作为哈希消息认证码HMAC运算的加密密钥,将安全哈希算法SHA作为HMAC运算的加密用散列函数,进行HMAC运算,得到原始密文密码;

将所述用户标识与所述原始密文密码对应存储在数据库中。

进一步地,处理器601还用于,

在获取用户标识及原始明文密码之前,接收客户端发送的注册请求,所述注册请求中包括所述用户标识及第一密文,所述第一密文由所述客户端采用预设加密算法加密所述原始明文密码得到;

具体地,处理器601可按照如下方式获取用户标识及原始明文密码:

处理器601从所述注册请求中获取所述用户标识,以及采用与所述预设加密算法对应的预设解密算法,解密所述注册请求中包括的所述第一密文以获取所述原始明文密码。

具体地,所述客户端采用预设加密算法加密所述原始明文密码得到所述第一密文包括:

所述客户端采用不对称加密算法RSA公钥加密所述原始明文密码,然后采用安全版超文本传输协议HTTPS公钥对加密后的所述原始明文密码再次加密得到所述第一密文;

具体地,处理器601采用与所述预设加密算法对应的预设解密算法,解密所述注册请求中包括的所述第一密文以获取所述原始明文密码包括:

处理器601采用HTTPS私钥解密所述第一密文,然后采用RSA私钥对解密后的所述第一密文再次解密以获取所述原始明文密码。

进一步地,处理器601还用于,在获取用户标识及原始明文密码之后,

生成随机盐值和随机数;

将所述随机盐值作为HMAC运算的加密密钥,将SHA作为HMAC运算的加密用散列函数,使用所述随机数进行HMAC运算,得到所述预设盐值。

进一步地,处理器601还用于,

接收所述客户端发送的验证请求,所述验证请求中包括所述用户标识及第二密文,所述第二密文由所述客户端采用所述预设加密算法加密实时明文密码得到;

从所述验证请求中获取所述用户标识,采用与所述预设加密算法对应的预设解密算法,解密所述验证请求中包括的所述第二密文以获取所述实时明文密码;

利用所述预设盐值对所述实时明文密码加盐得到实时密钥;

将所述实时密钥作为HMAC运算的加密密钥,将SHA作为HMAC运算的加密用散列函数,进行HMAC运算,得到实时密文密码;

从所述数据库中取出所述用户标识对应的所述原始密文密码;

判断所述实时密文密码与所述原始密文密码是否相同;

若相同,则确认验证成功,若不同,则确认验证失败。

具体地,所述SHA包括:SHA1、SHA2或SHA3。

由上可知,本实施例的装置在获取用户标识及原始明文密码之后,会利用预设盐值对所述原始明文密码加盐得到原始密钥,然后将所述原始密钥作为HMAC运算的加密密钥,将SHA作为HMAC运算的加密用散列函数,进行HMAC运算,得到原始密文密码,最后将所述用户标识与所述原始密文密码对应存储在数据库中。经验证,SHA算法本身就很难被破解,而将原始明文密码加盐之后得到的原始密钥已相当复杂,所以以所述原始密钥为加密密钥,以所述SHA作为加密用散列函数进行HMAC运算得到的原始密文密码,即使穷举,也很难破解出原始明文密码,因而本实施例的装置,能够保障密码安全,降低密码被泄露的风险,特别对防御暴利破解、中间人攻击、劫持和反向解密都有很好的效果。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,装置,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1