• 对旧的用户密码系统的改造


    旧的系统密码存储的是md5(password),理论上md5在有限的时间空间内是不可逆的(实际上已经有人可以了)
    一般使用md5(password),加加密后的密码进行保存
    但这会有一个比较严重的问题,比如密码是123456的用户,存储的密码值都是e10adc3949ba59abbe56e057f20f883e
    这样就会导致,如果被暴库后,可以拿已知的字典表来直接匹配了(所有e10adc3949ba59abbe56e057f20f883e的用户密码都是123456,这不是废话么)

    一般的处理方式是加盐(salt),也就是md5(相对不变的内容+密码),这样即使密码一样,存储的内容也不一样,“相对不变的内容”一般会是用户名
    这样的话,存储的是md5(userName+password)
    这样就会好很多了,但是如果你的系统以前使用的md5(password),那么,你本身并没有存储password,要升级到这个方案,基本是不可行的。

    md5(userName+md5(password)),这样的方案就优雅些了,也加了盐,也可以从原有的系统进行平滑升级

    贴一点代码吧,

    Java代码
    1. package info.frady;   
    2.   
    3. import org.apache.commons.codec.digest.DigestUtils;   
    4. public class CommonTest {   
    5.   
    6.     public static void main(String[] args) {   
    7.         String userName="frady";   
    8.         String password="123456";   
    9.         System.out.println(DigestUtils.shaHex(password));//sha(password),很少这么干   
    10.         System.out.println(DigestUtils.md5Hex(password));//md5(password),通用的做法   
    11.         System.out.println(DigestUtils.md5Hex(userName+password));//md5(userName+password),加强的做法,加了用户名做salt   
    12.         System.out.println(DigestUtils.md5Hex(userName+DigestUtils.md5Hex(password)));//md5(userName+md5(password)),兼容旧md5(password)升级的安全做法,用用户名做salt   
    13.     }   
    14. }  
  • 相关阅读:
    PostgreSQL Monitor pg_activity
    bzoj2333 [SCOI2011]棘手的操作
    bzoj1499 [NOI2005]瑰丽华尔兹
    bzoj2561 最小生成树
    bzoj2038 [2009国家集训队]小Z的袜子(hose)
    bzoj2002 [Hnoi2010]Bounce 弹飞绵羊
    bzoj3589 动态树
    bzoj4034 [HAOI2015]树上操作
    bzoj4774 修路
    2018.1.14 省选模拟赛
  • 原文地址:https://www.cnblogs.com/win7xt/p/3126034.html
Copyright © 2020-2023  润新知