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

解决方案 »

  1.   

    如果用户改了密码我就直接把用户密码加密后放到数据库
    2. 如果用户没有改密码,我应该怎么操作了?没有修改密码,那就不用管它,更新时不更新这列就行了?
    sha是散列算法,不是加密,它不能提供反向的结果,即不能提供解密。如果你想比对一下用户输入的原密码是否正确,将输入的原密码,sha之后,直接同数据库的比就行了。
      

  2.   

    谢谢Fly_m回复 ,   我现在的问题就是要解决  怎么判断密码是否更改的问题
      

  3.   

    hibernate 里面不是有 update ,merge 方法么??内部会判断! 字段有变化,会更新,无变化不会更新!
    楼主多虑了。
      

  4.   

    谢谢 fuwenhai   这是需求 没有办法
    谢谢 luckyc2008  但是有另一个问题,就是管理员修改别人的密码,他是不知道别人的密码的1. 修改用户自己的资料时,可以修改密码
       处理方法:客户端这边密码放空,让用户再输入一次密码2. 高级权限可以修改别的用户的资料
       处理方法:不知道怎么搞??  客户端这边密码放空是不行的,因为你是不知道密码的。
      

  5.   

    第一 客户没修改密码 你就不要更新这列
    第二 验证密码之前先把客户输入的密码sha一次再和数据库的已保存的密码比对
    第三 管理员要修改密码,他不需要知道原密码是多少,就吧管理员设定的新密码sha之后存到数据库就OK楼主业务上想太多了
      

  6.   

    谢谢大家回复,过程是这样的
    1.  管理员编辑用户信息,将用户信息取回来显示到客户端,供编辑2.  管理修改用户的信息,客户端验证后提交到后台
        问题出现在这里:我将用户信息取回来,这时密码是取不回来的,因为sha加密的,这时客户端应该放什么密码,放空字符可以吗?放空字符客户端验证通不过,因为用户可能不修改密码,他修改别的信息,提交时密码是为空,客户端验证是通不过的,不知道大家有什么好的办法。3.  后台保存数据
      

  7.   

    客户端显示密码反正是小圆点嘛,
    你可以随便设8个1之类的呗,
    反正你输新密码是和db里的sha算法后密码比较。或者就把客户端对密码为空的check去掉。