日期:2014-05-20  浏览次数:20637 次

密码加密问题
我用sha算法对秘密进行加密,然后存放到数据库。
当我修改用户时带来问题
1. 如果用户改了密码我就直接把用户密码加密后放到数据库
2. 如果用户没有改密码,我应该怎么操作了?


------解决方案--------------------
如果用户改了密码我就直接把用户密码加密后放到数据库
2. 如果用户没有改密码,我应该怎么操作了?

没有修改密码,那就不用管它,更新时不更新这列就行了?
sha是散列算法,不是加密,它不能提供反向的结果,即不能提供解密。

如果你想比对一下用户输入的原密码是否正确,将输入的原密码,sha之后,直接同数据库的比就行了。
------解决方案--------------------
你修改用户时不用修改密码吧,那就不管他就行了
跟不加密的处理方法没什么不同
加密只是在往数据库中存密码或修改密码时中间多了一个一一对应的转变过程而已
------解决方案--------------------
1.只能显示空啦,因为你的算法不可逆了,原始密码解不出来啦
2.用户提交后,你加密后和原来数据库加密过的密码比较一下,变了就修改一下,没变就不管
------解决方案--------------------
2. 高级权限可以修改别的用户的资料
处理方法:不知道怎么搞?? 客户端这边密码放空是不行的,因为你是不知道密码的。

高级权限修改别人密码,不需要知道密码信息,直接修改,即修改为其它的密码,后台不用判断密码正确与否,只需要判断如果前台输入了修改的密码,则直接更新之。
------解决方案--------------------
第一 客户没修改密码 你就不要更新这列
第二 验证密码之前先把客户输入的密码sha一次再和数据库的已保存的密码比对
第三 管理员要修改密码,他不需要知道原密码是多少,就吧管理员设定的新密码sha之后存到数据库就OK

楼主业务上想太多了
------解决方案--------------------
探讨

谢谢 fuwenhai 这是需求 没有办法
谢谢 luckyc2008 但是有另一个问题,就是管理员修改别人的密码,他是不知道别人的密码的

1. 修改用户自己的资料时,可以修改密码
处理方法:客户端这边密码放空,让用户再输入一次密码

2. 高级权限可以修改别的用户的资料
处理方法:不知道怎么搞?? 客户端这边密码放空是不行的,因为你是不知道密码的。

------解决方案--------------------
如果是管理员改密码,不需要验证密码,判断下即可
------解决方案--------------------
客户端显示密码反正是小圆点嘛,
你可以随便设8个1之类的呗,
反正你输新密码是和db里的sha算法后密码比较。

或者就把客户端对密码为空的check去掉。

探讨
谢谢大家回复,过程是这样的
1. 管理员编辑用户信息,将用户信息取回来显示到客户端,供编辑

2. 管理修改用户的信息,客户端验证后提交到后台
问题出现在这里:我将用户信息取回来,这时密码是取不回来的,因为sha加密的,这时客户端应该放什么密码,放空字符可以吗?放空字符客户端验证通不过,因为用户可能不修改密码,他修改别的信息,提交时密码是为空,客户端验证是通不过的,不知道大家有什么好的……