一种高扩展性密码加密存储方法技术

技术编号:26478927 阅读:16 留言:0更新日期:2020-11-25 19:23
本发明专利技术提出了一种高扩展性加密存储方法,通过配置不同的加密算法,且对各加密算法的盐值都进行一次盐值加密,然后设置编码规则实现对用户明文密码、密文密码、盐值、加密盐值等的存储,从而实现了高安全性、高可移植性和高可维护性的一种密码加密存储。本发明专利技术扩展了密码保存加密算法的多样性,盐值与密码双重加密,然后编码存储,同时增加干扰因子,极大的增加了密码被破解的难度。同时支持用户自定义加密算法,密码保存编码规则,指定噪声因子位置以及长度,能够很灵活的增加密码保存方案的复杂性和多样性。同时这种方案对于系统升级和数据迁移也是友好的,能够很好的满足系统的升级和扩展。

【技术实现步骤摘要】
一种高扩展性密码加密存储方法
本专利技术属于计算机信息技术安全领域,具体地说,涉及一种高扩展性密码加密存储方法。
技术介绍
在信息化数字化的时代,信息安全越发显得重要,而现有的一些加密方法存在以下不足:在安全性方面:现有的一些密码加密的方案中,比较流行的一种做法是一个系统确定一种加密算法,然后对密码进行加盐加密得到密文,然后分别存储密文字段和盐值字段。这种方式有一个弊端是,密文和盐值通过数据库字段就被解析了,减小了被破解的成本,如果数据库数据泄露,不法分子可以通过尝试现有的加密算法通过暴力破解的方式来尝试破解系统所用的加密算法。这样在信息安全方面显得不那么安全。在可维护性方面:现有的流行的密码管理方式中,在一个系统确定了一种加密方式之后,如果要扩展支持新的加密算法,需要做许多兼容性的工作,需要对老的数据的验密做兼容处理,涉及到更改系统原有的代码。而密码模块又是系统比较核心的模块,更新维护的成本是很高的。并且在某些业务场景里,不同的客户对系统的加密算法有不同的要求,这种情况下,对系统进行改造的成本就更高了。故在可维护性上也有待提升。在可移植性方面:现有的流行的密码存储方式,在系统升级与数据迁移时,要保证新的系统和旧的系统密码加密算法必须保持一致,制约了新的系统使用新的加密算法的可能性。
技术实现思路
本专利技术针对现有技术在上述安全性、可维护性和可移植性上的不足,提出了一种高扩展性密码加密存储方法,通过配置不同的加密算法,且对各加密算法的盐值都进行一次盐值加密,然后设置编码规则实现对用户明文密码、密文密码、盐值、加密盐值等的存储,从而实现了高安全性、高可移植性和高可维护性的一种密码加密存储。本专利技术具体实现内容如下:本专利技术提出了一种高扩展性密码加密存储方法,包括以下步骤:步骤1:首先获取加密算法配置模块生成的加密算法列表;所述加密算法列表包括多个加密算法,每一个所述加密算法都有唯一的编码code和对应的名称及类型;所述类型包括系统内置和用户添加;步骤2:在加密盐值生成模块生成一个32位长度的随机字符串,所述随机字符串为加密算法的盐值salt;然后通过aes算法对盐值salt进行对称加密,得到加密后的盐值aes_salt;步骤3:在密码加密模块获取用户设置的加密算法,判断是否需要使用盐值salt对用户的用户密码s通过加密算法进行加密,若判断为需要,则使用盐值salt通过加密算法对用户密码s进行加密算法得到用户密码s的密码密文clipertext;步骤4:在密码存储编码模块生成密码存储的编码规则列表,将用户密码s、加密后的密码密文clipertext和盐值salt进行位序编码保存;步骤5:通过密码校验模块对用户输入的用户名及密码的明文plaintext进行校验。为了更好地实现本专利技术,进一步地,在所述步骤2和步骤5阶段设置密钥k,在步骤2阶段,使用aes加密函数结合密钥k将为明文的盐值salt加密生成加密后的盐值aes_salt;在步骤5阶段,通过aes解密函数结合密钥k对加密后的盐值aes_salt进行解密校验。为了更好地实现本专利技术,进一步地,所述编码规则列表中包括多个编码规则,每一种编码规则有一个唯一的id;所述编码规则列表中的编码规则分为系统内置和用户添加。为了更好地实现本专利技术,进一步地,所述用户添加为:用户选择加密算法、加密后的盐值aes_salt、密码密文clipertext的排列顺序,在密码存储字段固定的某处索引index添加固定长度len的噪声因子noise。为了更好地实现本专利技术,进一步地,所述噪声因子noise长度小于64位。为了更好地实现本专利技术,进一步地,所述步骤5的具体操作为:步骤5.1:获取用户输入的用户名和密码的明文plaintext;步骤5.2:通过用户名对保存的用户密码s进行查询,若在系统中未查询到相应用户名或者用户密码s未通过盐值salt进行加密,则直接返回,验密失败;步骤5.3:若在系统中查询到相应的用户名或者用户密码s通过盐值salt进行加密,则对保存的用户密码s进行解析,通过解析用户密码s的前两位数据,得到加密算法的编码规则的id;步骤5.4:通过获得的编码规则的id获取编码规则,并通过编码规则从用户密码s中消除噪声因子noise,并获取到加密算法的编码code、加密后的盐值aes_salt以及加密后的密码密文clipertext;步骤5.5:通过编码code获取对应的加密算法,并通过加密算法判断是否需要有需要解密的盐值aes_salt,若有需要解密的盐值aes_salt,则通过aes解密函数对盐值aes_salt进行解密得到盐值salt;步骤5.6:将用户输入的明文plaintext通过加密算法加密得到输入加密密码密文clipertext1;步骤5.7:将输入加密密码密文clipertext1与保存的密码密文clipertext进行对比,若对比结果相同,则验密成功,允许用户进行其他受保护的操作;若对比结果不一致,则验密失败,阻断用户进行其他操作。为了更好地实现本专利技术,进一步地,所述判断是否需要使用盐值salt对用户的用户密码s通过加密算法进行加密的判断依据为:对于步骤1中系统内置的加密算法,都需要使用盐值salt进行加密;对于步骤1中用户添加的加密算法,通过使用加密算法指定的编程语言对应的执行工具,调用加密算法实现的isNeedSalt方法,来判断是否需要盐值salt,如果返回值为true,则需要盐值salt,如果返回值为false,则不需要盐值salt。为了更好地实现本专利技术,进一步地,在用户添加加密算法时,需要为需要添加的加密算法命名,在添加成功后,在系统中为新添加的加密算法生成唯一的编码code,然后获取加密算法列表,设置新添加的加密算法为对用户密码s进行加密的默认加密算法。为了更好地实现本专利技术,进一步地,所述添加加密算法的具体操作为:首先用户选择加密要实现的加密算法所用的编程语言;然后填充对应编程语言加密算法的代码模板,所述代码模板包含了要添加的加密算法必须要实现的两个方法:方法1:isNeedSalt()bool(是否需要盐值salt)-方法名:isNeedSalt-参数:无-返回值:bool类型,如果本加密算法需要盐值salt,返回true;不需要盐值salt则返回false;方法2:encrypted(plaintextstring,saltstring)string(对明文进行加密)-方法名为:encrypted-参数:明文plaintext,string类型,用户输入的明文;盐值salt,string类型,加密算法需要用到的盐值salt,如果isNeedSalt()方法返回为false,则参数不应在加密方法的实现中被使用;-返回值:string类型,返回用户密码s经过加密之后的密码密文clipe本文档来自技高网...

【技术保护点】
1.一种高扩展性密码加密存储方法,基于加密算法配置模块、加密盐值生成模块、密码加密模块、密码存储编码模块、密码校验模块,其特征在于,包括以下步骤:/n步骤1:首先获取加密算法配置模块生成的加密算法列表;所述加密算法列表包括多个加密算法,每一个所述加密算法都有唯一的编码code和对应的名称及类型;所述类型包括系统内置和用户添加;/n步骤2:在加密盐值生成模块生成一个32位长度的随机字符串,所述随机字符串为加密算法的盐值salt;然后通过aes算法对盐值salt进行对称加密,得到加密后的盐值aes_salt;/n步骤3:在密码加密模块获取用户设置的加密算法,判断是否需要使用盐值salt对用户的用户密码s通过加密算法进行加密,若判断为需要,则使用盐值salt通过加密算法对用户密码s进行加密得到用户密码s的密码密文clipertext;/n步骤4:在密码存储编码模块生成密码存储的编码规则列表,将用户密码s、加密后的密码密文clipertext和盐值salt进行位序编码保存;/n步骤5:通过密码校验模块对用户输入的用户名及密码的明文plaintext进行校验。/n

【技术特征摘要】
1.一种高扩展性密码加密存储方法,基于加密算法配置模块、加密盐值生成模块、密码加密模块、密码存储编码模块、密码校验模块,其特征在于,包括以下步骤:
步骤1:首先获取加密算法配置模块生成的加密算法列表;所述加密算法列表包括多个加密算法,每一个所述加密算法都有唯一的编码code和对应的名称及类型;所述类型包括系统内置和用户添加;
步骤2:在加密盐值生成模块生成一个32位长度的随机字符串,所述随机字符串为加密算法的盐值salt;然后通过aes算法对盐值salt进行对称加密,得到加密后的盐值aes_salt;
步骤3:在密码加密模块获取用户设置的加密算法,判断是否需要使用盐值salt对用户的用户密码s通过加密算法进行加密,若判断为需要,则使用盐值salt通过加密算法对用户密码s进行加密得到用户密码s的密码密文clipertext;
步骤4:在密码存储编码模块生成密码存储的编码规则列表,将用户密码s、加密后的密码密文clipertext和盐值salt进行位序编码保存;
步骤5:通过密码校验模块对用户输入的用户名及密码的明文plaintext进行校验。


2.如权利要求1所述的一种高扩展性密码加密存储方法,其特征在于,在所述步骤2和步骤5阶段设置密钥k,在步骤2阶段,使用aes加密函数结合密钥k将为明文的盐值salt加密生成加密后的盐值aes_salt;在步骤5阶段,通过aes解密函数结合密钥k对加密后的盐值aes_salt进行解密校验。


3.如权利要求2所述的一种高扩展性密码加密存储方法,其特征在于,所述编码规则列表中包括多个编码规则,每一种编码规则有一个唯一的id;
所述编码规则列表中的编码规则分为系统内置和用户添加。


4.如权利要求3所述的一种高扩展性密码加密存储方法,其特征在于,所述用户添加为:用户选择加密算法、加密后的盐值aes_salt、密码密文clipertext的排列顺序,在密码存储字段固定的某处索引index添加固定长度len的噪声因子noise。


5.如权利要求4所述的一种高扩展性密码加密存储方法,其特征在于,所述噪声因子noise长度小于64位。


6.如权利要求4所述的一种高扩展性密码加密存储方法,其特征在于,所述步骤5的具体操作为:
步骤5.1:获取用户输入的用户名和密码的明文plaintext;
步骤5.2:通过用户名对保存的用户密码s进行查询,若在系统中未查询到相应用户名或者用户密码s未通过盐值salt进行加密,则直接返回,验密失败;
步骤5.3:若在系统中查询到相应的用户名或者用户密码s通过盐值salt进行加密,则对保存的用户密码s进行解析,通过解析用户密码s的前两位数据,得到加密算法的编码规则的id;
步骤5.4:通过获得的编码规则的id获取编码规则...

【专利技术属性】
技术研发人员:陈志范渊吴永越郑学新刘韬
申请(专利权)人:成都安恒信息技术有限公司
类型:发明
国别省市:四川;51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1