一种非存储的密码管理算法

文档序号:7814650阅读:463来源:国知局
一种非存储的密码管理算法
【专利摘要】本发明公开了一种非存储的密码管理算法,包括以下步骤:S1:用户注册时后台服务器记录用户的密匙、域名、密码格式并为用户生成salt值;S2:对用户密钥+域名+密码格式+salt值进行md5加密;S3:对加密值进行移位并分3段进行截取;S4:自定义字符字典、数字字典和符号字典;S5:根据用户需要的密码的位数,截取S3得到的加密字符串并按照S4定义的字典匹配,得到密码;S6:用户再次登录时,登录密码生成网站,输入密匙、域名和密码格式,后台服务器重复S1~S5,得到密码。本发明的整个密码加密算法是不可逆的,能够降低密码被破解的风险,用户只需要记住一个KEY就能管理无数密码,使用方便且风险低。
【专利说明】一种非存储的密码管理算法

【技术领域】
[0001]本发明涉及一种密码管理算法,特别涉及一种非存储的密码管理算法。

【背景技术】
[0002]如何管理我们越来越多的密码是上网用户越来越重视的问题,大家可能都有这样的感受,就是不爱记忆太多的密码,所以大部分的网站或者应用都用了同一个密码,例如淘宝的,京东的,QQ的等等。很多人都没有对密码的安全意识,所有网站的密码都设一样。如果所有应用的密码都用一个,任何一个被盗,黑客不仅可以进入邮箱,而且可以进入QQ、MSN等及时聊天系统,甚至淘宝,京东,支付宝,微信这些信息都将被获取,从而获得更多的私人关系和关心网信息,这也就是为什么会有那么多利用QQ进行诈骗亲朋好友的案例,给用户造成了许多不可挽回的损失。
[0003]因此为了账户安全和个人信息的保密,建议用户尽量不要使用相同的密码,特别是重要的如银行账户之类的,一定要谨慎。但随着用户使用的网站门户越来越多,密码也越来越繁琐和复杂,为了记录和管理不同的密码,很多用户将密码采用第三方工具进行存储管理,而将密码存储于第三方工具,用户也得自行承担风险。
[0004]现在通用的密码进行hash加密,比如MD5之类的可以比较有效的防止被破译,但是如果直接对密码进行hash,那么黑客可以对一个已知密码进行散列,然后通过对比散列值得到某用户的密码。换句话说,虽然黑客不能取得某特定用户的密码,但他可以知道使用特定密码的用户有哪些,仍然存在很大的风险。


【发明内容】

[0005]本发明的目的在于克服现有技术的不足,提供一种密码加密算法不可逆,能够有效降低密码被破解的风险,用户只需要记住一个KEY就能管理无数密码,既能保证不同的网站使用不同的密码,提高安全性,又能降低使用第三方工具带来的风险的非存储的密码管理算法。
[0006]本发明的目的是通过以下技术方案来实现的:一种非存储的密码管理算法,包括以下步骤:
[0007]S1:用户注册时后台服务器记录用户的密匙、域名、密码格式并为用户生成salt值;
[0008]S2:对获取的用户密钥+域名+密码格式+salt值进行md5加密;
[0009]S3:对md5加密值进行移位,并分3段进行截取;
[0010]S4:自定义字符字典、数字字典和符号字典;
[0011]S5:生成不同格式的密码:根据用户需要的密码的位数,截取步骤S3得到的加密字符串,并对截取的加密字符串按照步骤S4中定义的字符字典、数字字典或符号字典进行匹配,得到密码;
[0012]S6:用户再次登录已注册过的网站或应用时,登录密码生成网站,输入密匙、域名和密码格式,后台服务器重复步骤SI?S5的操作,得到用户的注册时生成的密码。
[0013]进一步地,所述的步骤SI中的密钥由用户自己填写,作为获取密码的唯一标识,密钥设置为超过11位的数字+英文大小写+特殊符号;
[0014]所述的域名是由用户填写具体的网站,用户还能通过在域名后面添加字符来对域名进行改造,生成自己的域名密码;
[0015]所述的密码格式是由用户根据具体的场景生成的相应的密码;
[0016]所述的salt值在代码算法中定义,任何人都不可见,用于防止后台算法被破解,由数字+英文字母大写+英文字母小写+特殊符号组成的64位字符串。
[0017]进一步地,所述的步骤S2中md5加密的具体方法为:对获取的用户密钥+域名+密码格式+salt值采用国际通用的Md5散列算法进行加密,得到一串由O?9和a?f组成的32位字符串。
[0018]进一步地,所述的步骤S3中移位的具体方法为:统计Md5加密值中字母的数量,记为η,然后对整个加密值左移或右移η位。
[0019]进一步地,所述的步骤S4中自定义字符字典的方法为:将O?9和a?f转换为英文大写字母或者小写字母,转换前的O?9、a?f与转换后的英文字母具有一一对应关系;
[0020]自定义数字字典的方法为:将O?9和a?f转换为数字O?9;
[0021]自定义符号字典的方法为:将O?9和a?f转换为特殊符号,转换前的O?9、a?f与转换后的特殊符号具有对应关系。
[0022]本发明的有益效果是:
[0023]1、从获取用户密匙、域名、密码格式,自定义salt值,再到进行md5加密、移位、分段截取,自定义字符字典、数字字典和符号字典,到最后的生成用户需要的密码,整个密码加密算法是不可逆的,能够有效降低密码被破解的风险,而且整个过程中不存储用户信息,即使密码被破解也能降低用户信息泄露的风险;
[0024]2、用户只需要记住一个KEY就能管理无数密码,由于每个应用或网站的域名都是独一无二的,因此密码不会出现重复或相同的情形,既能保证不同的网站使用不同的密码,提高安全性,又能降低使用第三方工具带来的风险;
[0025]3、所有的加密算法都是在后台服务器进行的,所有算法对外不可见,降低了密码被破译的风险;
[0026]4、支持WEB,Android, 1S等所有平台,能够进行推广使用。

【专利附图】

【附图说明】
图1为本发明的用户注册界面示意图。

【具体实施方式】
[0027]salt这个“佐料”也就是在对密码进行hash (散列算法)时,添加的一个随机数。其基本想法是这样的:当用户首次提供密码时(通常是注册时),由系统自动往这个密码里撒一些“佐料”,然后再散列。而当用户登录时,系统为用户提供的代码撒上同样的“佐料”,然后散列,再比较散列值,以确定密码是否正确。因为salt值是系统随机生成的,即使两个用户用了相同的密码,他们的hash值也不一样,黑客找出密码的几率大大减小了(必须是密码和自己生成的散列值都跟用户相同,这个概率很低了)。下面结合附图和具体实施例进一步说明本发明的技术方案,但本发明所保护的内容不局限于以下所述。
[0028]本发明的一种非存储的密码管理算法包括以下步骤:
[0029]S1:用户注册时后台服务器记录用户的密匙、域名、密码格式并为用户生成salt值;
[0030]S2:对获取的用户密钥+域名+密码格式+salt值进行md5加密;
[0031]S3:对md5加密值进行移位,并分3段进行截取;
[0032]S4:自定义字符字典、数字字典和符号字典;
[0033]S5:生成不同格式的密码:根据用户需要的密码的位数,截取步骤S3得到的加密字符串,并对截取的加密字符串按照步骤S4中定义的字符字典、数字字典或符号字典进行匹配,得到密码;
[0034]S6:用户再次登录已注册过的网站或应用时,登录密码生成网站,输入密匙、域名和密码格式,后台服务器重复步骤SI?S5的操作,得到用户的注册时生成的密码。
[0035]本实施例所述的步骤SI中用户登录网页或者手机APP之后会看到如图1所示的输入框,其中,密钥由用户自己填写,作为获取密码的唯一标识,密钥设置为超过11位的数字+英文大小写+特殊符号,例如:2014abcD@) ! $ ;
[0036]所述的域名是由用户填写具体的网站,用户还能通过在域名后面添加字符来对域名进行改造,生成自己的域名密码;例如用户想生成自己淘宝的密码,可以输入taobao,后台服务器会自动填充WWW.taoba0.com,用户想生成自己百度的密码,可以输入www.baidu.com等等;用户还能对域名做个改造,比如在com后面添加自己想添加的字符,例如张三,可以设置为WWW.taoba0.comzs,这样的好处是,哪怕密钥丢失用户的taobao密码也不会丢失;
[0037]所述的密码格式是由用户根据具体的场景生成的相应的密码,因为互联网上各个场景需要的密码格式可能不一样,有些网站只能输入数字,有些不能输入符号等等。用户能根据具体的场景生成相应的密码。
[0038]所述的salt值在代码算法中定义,任何人都不可见,用于防止后台算法被破解,由数字+英文字母大写+英文字母小写+特殊符号组成的64位字符串,这样做的好处能使生成的密码安全级别相当高,当前最好的超级计算机想破解时间系数都为几年。
[0039]本实施例所述的步骤S2中md5加密的具体方法为:对获取的用户密钥+域名+密码格式+salt值采用国际通用的Md5散列算法进行加密,得到一串由O?9和a?f组成的 32 位字符串,例如:202cb962ac59075b964b07152d234b70。
[0040]得到Md5值之后,先对该值做移位处理,虽然Md5理论上不可能破解,但是还是需要防止反查。为了规避这种风险,采用步骤S3进行移位处理,其具体方法为:统计Md5加密值中字母的数量,记为n,然后对整个加密值左移或右移η位。
[0041]例如
[0042]202cb962ac59075b964b07152d234b70 移位之后变为:
[0043]ac59075b964b07152d234b70202cb962
[0044]因为Md5字符为32位,用不到这么多位,所以通过程序分三段截取Md5值,例如分别为[3,12] [9,18] [27,36]:
[0045]202cb962ac59075b964b07152d234b70 分段之后变为:
[0046]9075b964b64b07152d34b70202c
[0047]因为用户最后需要的是字母大小写,特殊符号或者数字,所以这里是算法的关键,本发明用到了数据字典、字符字典和符号字典:将Md5的字符(O?9、a?f)通过字典转换为用户需要的密码。进一步地,所述的步骤S4中自定义字符字典的方法为:将O?9和a?f转换为英文大写字母或者小写字母,转换前的O?9、a?f与转换后的英文字母具有对应关系;
[0048]自定义数字字典的方法为:将O?9和a?f转换为数字O?9;
[0049]自定义符号字典的方法为:将O?9和a?f转换为特殊符号,转换前的O?9、a?f与转换后的特殊符号具有一一对应关系。下面分别为本实施例采用的字符字典、数字字典和符号字典的定义方法:
[0050]// 数字
[0051]$score = array (
[0052]‘O,= > ‘7,,‘I’ = > ‘4,,
[0053]‘2,= > ‘3,,‘3’ = > ‘5,,
[0054]‘4,= > ‘4,,‘5’ = > ‘7,,
[0055]‘6,= > ‘6,,‘7’ = > ‘9,,
[0056]‘8,= > ‘1,,‘9’ = > ‘0,,
[0057]‘a,= > ‘3,,‘b’ = > ‘7,,
[0058]‘C,= > ‘8,,‘d,= > ‘8,,
[0059]‘e,= > ‘2,,‘f,= > ‘3’
[0060]);
[0061]//字符
[0062]$letter = array (
[0063]‘0,= > ‘m,,‘I,= > V,
[0064]‘2,= > ‘h,,‘3’ = > ‘a,,
[0065]‘4,= > ‘r,,‘5’ = > ‘d,,
[0066]‘6,= > ‘u,,‘V = > ‘b,,
[0067]‘8,= > ‘e,,‘9,= > ‘g,,
[0068]‘a,= > ‘z,,‘b,= > ‘j,,
[0069]‘c,= > ‘y,,‘d,= > ‘s,,
[0070]‘e,= > V,‘f,= > ‘X,
[0071]);
[0072]Η 符号
[0073]$symbol = array (
[0074]‘0, = > ‘! ,,‘I, = > ‘{,,
[0075]‘2,= > ‘$,,‘3,= > ‘ I,,
[0076]‘4,= > ‘>,,‘5,= > ‘,”,
[0077]‘6,= > ‘,,,‘7,= > ‘;,,
[0078]‘8,= > ‘],,‘9,= > ‘:,,
[0079]‘a,= > ‘),,‘b,= > ‘ %,,
[0080]‘C,= >‘d,= > ‘#,,
[0081]‘e,= > ‘&,,‘f,= >
[0082]);
[0083]例如Md5 值为 012......def
[0084]通过数字字典将转换为743……823 ;
[0085]通过字符字典将转换为mph......sqx ;
[0086]通过符号字典将转换为! {$……#&§;
[0087]通过步骤S3得到了基本不可能被破解的唯一加密字符串,通过步骤S4得到了字符定义表;如果用户此时需要“数字+字母大小写+特殊符号”的12位密码,先截取通过步骤S3得到的加密字符串,比如截取3-12位,将得到:5b964b64b071,将得到的字符分为3段分别为:
[0088]5b96 4b64 b071
[0089]再通过步骤S4得到的数据字典、字符字典和符号字典对三段字符做匹配,将得到(只举例说明第一段):5b96
[0090]5对应的数字字典:7;
[0091]b对应的字符字典:j;
[0092]9对应的符号字典::;
[0093]6对应的字符字典:u ;
[0094]最后得到的密码为:7j:u,其余8位类推,最终得到用户需要的密码。
[0095]本发明的算法中,用户只需要记住一个密匙,而网站或应用可以是无数个,每个网站或应用都有独一无二的域名,这样使用一个密匙就能生成无数个不相同的密码,确保用户的每个密码都不一样,而用户只需记住一个密匙即可,使用方便。当需要登录注册过的网站或应用时,用户登录密码生成网站,输入密匙和想要登录的网站或应用即可,后台服务器会自动填充网站或应用的完整域名,密码格式可以选为默认的,然后后台服务器采用跟用户注册时同样的算法获得注册时生成的密码,用户在打开需要登录的网站或应用,输入密码进行登录。
[0096]我们大部份密码泄漏都是在非官方网站输入了密码所致,而本发明的密匙的使用场景只有一个:只需要在密码生成网站上用,大大的提高了安全性。
[0097]本领域的普通技术人员将会意识到,这里所述的实施例是为了帮助读者理解本发明的原理,应被理解为本发明的保护范围并不局限于这样的特别陈述和实施例。本领域的普通技术人员可以根据本发明公开的这些技术启示做出各种不脱离本发明实质的其它各种具体变形和组合,这些变形和组合仍然在本发明的保护范围内。
【权利要求】
1.一种非存储的密码管理算法,其特征在于,包括以下步骤: 51:用户注册时后台服务器记录用户的密匙、域名、密码格式并为用户生成salt值; 52:对获取的用户密钥+域名+密码格式+salt值进行md5加密; 53:对md5加密值进行移位,并分3段进行截取; 54:自定义字符字典、数字字典和符号字典; 55:生成不同格式的密码:根据用户需要的密码的位数,截取步骤S3得到的加密字符串,并对截取的加密字符串按照步骤S4中定义的字符字典、数字字典或符号字典进行匹配,得到密码; S6:用户再次登录已注册过的网站或应用时,登录密码生成网站,输入密匙、域名和密码格式,后台服务器重复步骤SI?S5的操作,得到用户的注册时生成的密码。
2.根据权利要求1所述的一种非存储的密码管理算法,其特征在于,所述的步骤SI中的密钥由用户自己填写,作为获取密码的唯一标识,密钥设置为超过11位的数字+英文大小写+特殊符号; 所述的域名是由用户填写具体的网站,用户还能通过在域名后面添加字符来对域名进行改造,生成自己的域名密码; 所述的密码格式是由用户根据具体的场景生成的相应的密码; 所述的Salt值在代码算法中定义,任何人都不可见,用于防止后台算法被破解,由数字+英文字母大写+英文字母小写+特殊符号组成的64位字符串。
3.根据权利要求1所述的一种非存储的密码管理算法,其特征在于,所述的步骤S2中md5加密的具体方法为:对获取的用户密钥+域名+密码格式+salt值采用国际通用的Md5散列算法进行加密,得到一串由O?9和a?f组成的32位字符串。
4.根据权利要求1所述的一种非存储的密码管理算法,其特征在于,所述的步骤S3中移位的具体方法为:统计Md5加密值中字母的数量,记为n,然后对整个加密值左移或右移η位。
5.根据权利要求3所述的一种非存储的密码管理算法,其特征在于,所述的步骤S4中自定义字符字典的方法为:将O?9和a?f转换为英文大写字母或者小写字母,转换前的O?9、a?f与转换后的英文字母具有一一对应关系; 自定义数字字典的方法为:将O?9和a?f转换为数字O?9 ; 自定义符号字典的方法为:将O?9和a?f转换为特殊符号,转换前的O?9、a?f与转换后的特殊符号具有一一对应关系。
【文档编号】H04L9/06GK104348609SQ201410478762
【公开日】2015年2月11日 申请日期:2014年9月18日 优先权日:2014年9月18日
【发明者】熊方磊 申请人:成都西山居互动娱乐科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1