基于PHP开发平台不停服务对明文密码加密的方法与流程

文档序号:24824603发布日期:2021-04-27 15:37阅读:183来源:国知局
基于php开发平台不停服务对明文密码加密的方法
技术领域
1.本发明涉及明文密码加密技术领域,具体是指基于php开发平台不停服务对明文密码加密的方法。


背景技术:

2.很多运营很久的项目在早期快速发展的阶段,都无法做到方方面面考虑周到,以适应若干年后的市场需要。其中用户密码的加密问题就是一个很多项目都没有事先考虑到的问题,随着互联网技术的高速发展,数据库里保存用户的明文密码就成为了企业的一大安全隐患,一旦服务器被黑客入侵,数据库的数据被盗走,用户的明文密码就清清楚楚地摆在黑客的面前了,这将对企业造成无法想象的损失,甚至直接导致企业项目事业部的直接垮台。
3.常用的明文密码加密方案都是采用md5哈希算法对密码进行不可逆的加密处理,这种方案需要程序代码和数据的强统一性,对于海量数据的改造耗时比较长。直接采用md5哈希算法的加密方式对数据库里的用户明文密码进行加密,就势必需要对整个系统的所有涉及到密码读取、密码更新、用户身份验证的点的程序代码进行相应的修改,这样的操作的工作量是巨大的。而且平台用户量已经上百万,过千万,要同时完成修改代码,还要完成更新数据库密码,就无可避免地需要暂停向用户提供服务,进行大规模的用户明文密码改造工程,这对企业的损失也是非常大的。要解决这个问题就需要一个比较缓和的解决方案来实现不暂停服务来完成密码加密的改造工作。


技术实现要素:

4.本发明要解决的技术问题是克服上述缺陷,提供一种不需要数据和程序代码的强统一性、静默实施和逐步更新的php开发平台不停服务对明文密码加密的方法。
5.为解决上述技术问题,本发明提供的技术方案为:基于php开发平台不停服务对明文密码加密的方法,其实现方法包括以下步骤:
6.(1)增加密码字符串的长度,一般密码的长度都比较短,需要将密文密码的长度增加到64位,将pssswd warchar(50)变更为pssswd warchar(64)。
7.(2)增量数据改造,在新增加用户数据写入数据库之前,对原始密码字符串使用psswordencrypt函数进行加密。
8.(3)更新数据改造,在新密码更新到数据库前,对于原始密码字符串使用psswordencrypt函数进行加密。
9.(4)解决数据读取的用户密码问题,包括在用户身份验证等环节内,改造操作包括数据库操作对象改造和sql查询改造两个部分。
10.(4.1)数据库操作对象改造,如果项目全局数据库操作对象有在外面封装一层方法,就可以在封装的方法里面进行全局自动解密操作,查询到数据后,对字段名称为密码字段名称,且字段的值为64,字符串使用pssworddecrypt函数进行解密,如果密码已经进行加
密,就可以拿到原始密码,如果密码未加密,拿到的依然时原始未加密的密码。
11.(4.2)sql查询改造,通过sql语句进行密码匹配查询的情况下,需要将sql语句从直接的密码匹配改成双重密码匹配,将selecy*from t_user where user_name=[username]and passwd=[originalpassword]变更为selecy*from t_user where user_name=[username]and(passwd=encryptedpassword or passwd=[originalpassword]),变更后路,无论密码是否被加密过,都能够被正常匹配到。
[0012]
(5)批量更新存量数据,对所有存量数据进行改造,存量数据的多少和运营时间长短以及发展速度快慢相关,但是无论存量数据有多少,采用分段批量更新都不会造成平台系统的压力升高,首先建立一个批量更新的补丁程序,然后使用分页技术对现有存量数据进行遍历查询,最后没查询一页数据,对这一页数据内部的密码字段值使用psswordencrypt函数进行密码加密处理。
[0013]
(6)设计私钥文件保存在一个非系统目录,非系统目录的位置需要隐蔽。
[0014]
本发明与现有技术相比的优点在于:相较于现有技术,本发明采用不停服务加密方式采用的是平滑的实施方案,通过设计一个明文/密文混合的过渡阶段,实现对海量的用户的明文密码加密的实施过程中不需要暂停对用户的服务,就可以安静的进行密码加密改造的效果。对于运营成熟的企业来说是非常有价值的,能够有效解决平台出现服务器暂停的时间,减少不良的影响,降低用户对平台的怀疑度。
[0015]
作为改进,改造实施过程中的明文密码/密文密码混合,密码的加密算法采用des加密算法,psswordencrypt函数和pssworddecrypt函数均属于des加密算法,des加密算法为可逆算法。
[0016]
作为改进,所述psswordencrypt函数为加密函数,具体函数为psswordencrypt(originalpassword),用来对明文密码进行加密,得到64位长度的密文密码。
[0017]
作为改进,所述pssworddecrypt函数为解密函数,具体函数为pssworddecrypt(originalpassword),用于对64位长度的密文密码进行解密,得到原始的明文密码,如果解密失败,则返回传入的密文密码字符串。
[0018]
作为改进,所述增量数据改造,解决增量数据里面的用户密码密文问题,这些数据发生于用户注册、创建用户等环节内。
[0019]
作为改进,所述更新数据改造,解决存量数据在被更新时候的用户密码问题,这些数据发生于用户密码修改、用户密码重置等环节内。
具体实施方式
[0020]
下面对本发明做进一步的详细说明。
[0021]
基于php开发平台不停服务对明文密码加密的方法,其实现方法包括以下步骤:
[0022]
(1)增加密码字符串的长度,一般密码的长度都比较短,需要将密文密码的长度增加到64位,将pssswd warchar(50)变更为pssswd warchar(64)。
[0023]
(2)增量数据改造,在新增加用户数据写入数据库之前,对原始密码字符串使用psswordencrypt函数进行加密。
[0024]
(3)更新数据改造,在新密码更新到数据库前,对于原始密码字符串使用psswordencrypt函数进行加密。
[0025]
(4)解决数据读取的用户密码问题,包括在用户身份验证等环节内,改造操作包括数据库操作对象改造和sql查询改造两个部分。
[0026]
(4.1)数据库操作对象改造,如果项目全局数据库操作对象有在外面封装一层方法,就可以在封装的方法里面进行全局自动解密操作,查询到数据后,对字段名称为密码字段名称,且字段的值为64,字符串使用pssworddecrypt函数进行解密,如果密码已经进行加密,就可以拿到原始密码,如果密码未加密,拿到的依然时原始未加密的密码。
[0027]
(4.2)sql查询改造,通过sql语句进行密码匹配查询的情况下,需要将sql语句从直接的密码匹配改成双重密码匹配,将selecy*from t_user where user_name=[username]and passwd=[originalpassword]变更为selecy*from t_user where user_name=[username]and(passwd=encryptedpassword or passwd=[originalpassword]),变更后路,无论密码是否被加密过,都能够被正常匹配到。
[0028]
(5)批量更新存量数据,对所有存量数据进行改造,存量数据的多少和运营时间长短以及发展速度快慢相关,但是无论存量数据有多少,采用分段批量更新都不会造成平台系统的压力升高,首先建立一个批量更新的补丁程序,然后使用分页技术对现有存量数据进行遍历查询,最后没查询一页数据,对这一页数据内部的密码字段值使用psswordencrypt函数进行密码加密处理。
[0029]
(6)设计私钥文件保存在一个非系统目录,非系统目录的位置需要隐蔽。
[0030]
改造实施过程中的明文密码/密文密码混合,密码的加密算法采用des加密算法,psswordencrypt函数和pssworddecrypt函数均属于des加密算法,des加密算法为可逆算法。
[0031]
所述psswordencrypt函数为加密函数,具体函数为psswordencrypt(originalpassword),用来对明文密码进行加密,得到64位长度的密文密码。
[0032]
所述pssworddecrypt函数为解密函数,具体函数为pssworddecrypt(originalpassword),用于对64位长度的密文密码进行解密,得到原始的明文密码,如果解密失败,则返回传入的密文密码字符串。
[0033]
所述增量数据改造,解决增量数据里面的用户密码密文问题,这些数据发生于用户注册、创建用户等环节内。
[0034]
所述更新数据改造,解决存量数据在被更新时候的用户密码问题,这些数据发生于用户密码修改、用户密码重置等环节内。
[0035]
本发明的工作原理:要实现改造实施过程中的明文密码/密文密码混合的目的,密码的加密算法就不能使用不可逆的算法(如:md5等等),因为在实施过渡阶段里,密码需要加密(encrypt)也需要解密(decrypt),不可逆的算法无法实现密文密码的解密。本技术选择的是des加密算法,该算法有着效率高,安全性高的特点,关键的它是可逆的。本发明使用的php平台是一个脚本语言平台,脚本语言是无需编译即可执行的,特点是开发快捷、便于调试,但是也有着天然的缺陷,就是安全性和编译类的语言无法比拟,如果加密算法通过php实现,一旦平台被黑客入侵,就可以轻轻松松拿到加密算法程序代码,这样数据库里保存的密文密码就失去意义了。本技术采用的是php扩展方式将加密算法封装起来,给php业务程序代码调用,php扩展是使用c++语言编写的,绝对无法剽窃源程序。php扩展封装了加密算法,但是有个问题,就是php扩展的库文件都部署在应用服务器上,一旦黑客入侵,把整
个运行环境都克隆走,密文密码还是有被解开的可能。为了解决上述问题,本发明设计了一个私钥文件,这个私钥文件保存在一个非系统目录,非环境目录的隐蔽位置,除非黑客将服务器上的全部文件都克隆走,否则是无法破解用户密码的,而克隆全部文件是不可能的,耗时太长了,很快就会被网管发现了。
[0036]
以上对本发明及其实施方式进行了描述,这种描述没有限制性。总而言之如果本领域的普通技术人员受其启示,在不脱离本发明创造宗旨的情况下,不经创造性的设计出与该技术方案相似的结构方式及实施例,均应属于本发明的保护范围。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1