reloop
V2EX  ›  PHP

怎么更新密码加密算法? 比如 原策略是 如果密码是 abc 保存时改为 abc123 然后再 MD5 保存到数据库 , 现在被知道了 , 我想改算法 把 abc 改成 a1ab2bc3c 然后再 MD5 保存要怎么做?

  •  
  •   reloop · Sep 1, 2013 · 7235 views
    This topic created in 4811 days ago, the information mentioned may be changed or developed.
    20 replies  •  1970-01-01 08:00:00 +08:00
    swulling
    swulling
    Sep 1, 2013❤️1
    1
    各种语言都有那么多现成的安全的密码策略不用,为啥要自造呢,自造还选md5

    选一个现成的,对密文二次加密就好了。而你这个思路相当于要把md5逆向破解....
    anheiyouxia
    anheiyouxia
    Sep 1, 2013❤️2
    2
    我只想到一个笨方法,保留原来的加密算法,把用户输入的密码按照新算法换算成md5值进行对比,如果是错误的,那么就再按照原来的算法进行换算对比,如果值正确,那么再把这个旧的MD5用新的替换到数据库。

    因为现在md5暂时是不可逆的,所以要主动操作改变的话.......你这个情况,就我的了解,是没办法的了.....
    6mN361AJx04in471
    6mN361AJx04in471
    Sep 1, 2013 via Android❤️1
    3
    目前看来只有二楼方法可行了。

    楼主怎么不用HMACMD5或者HMACSHA1这种呢?
    reloop
    reloop
    OP
    Sep 1, 2013
    4
    @swulling
    @anheiyouxia
    @takwai
    多谢各位!!
    no2x
    no2x
    Sep 1, 2013
    5
    我的建议

    1。将 旧MD5加密的密码 通过 + 789 再 MD5 一次,保存,这样保证数据库里的数据更新了先。

    2。用户新登录或修改密码,则,MD5( MD5( 密码+123)+789 ) 校验后,用 MD5( 密码 + 随机码 ) 和 随机码 一起保存到新数据库。

    3。从此使用 密码 和 随机码 组合 MD5 校验。
    qq286735628
    qq286735628
    Sep 1, 2013
    6
    MD5不是用来加密,而是生成摘要的

    平常数据库中,保存用户密码的MD5值,也只是不想被爆后,用户密码直接暴露在外
    gamexg
    gamexg
    Sep 1, 2013
    7
    新密码保存为 v2$处理后的密码 ,用户登录的时候读版本标记,如果是新的就按新的处理,如果老的就按老的比较,并把密码改成新的版本保存。
    lichao
    lichao
    Sep 1, 2013
    8
    你当初要是用随机盐,就没这个烦恼了
    hahastudio
    hahastudio
    Sep 1, 2013
    9
    psw→psw_stored = md5(psw+123)→hash2(psw_stored + hash1(psw_stored))
    otakustay
    otakustay
    Sep 2, 2013
    10
    我很奇怪的是,对于加盐的md5,就算不是随机的盐,被知道算法有什么关系吗?加盐md5被逆(即便是字典法)有这么简单吗?
    vking
    vking
    Sep 2, 2013 via Android
    11
    再md5一次是最简单有效的办法。
    bigredapple
    bigredapple
    Sep 2, 2013
    12
    区分新老用户,
    老用户用老策略验证,成功更新到新策略
    新用户用新策略验证
    ichou
    ichou
    Sep 6, 2013
    13
    md5不可逆啊 你几乎不可能把所有数据100%取出明文密码了
    只能在密文基础上再加密了

    @otakustay 加盐md5被逆已经很普遍了 现在的字典真的够强大

    加密算法最好加盐后两次散列 这样可以在很大程度上避免被逆
    msputup
    msputup
    Sep 6, 2013
    14
    md5(md5($password))就好了。现在的字典还是破解不了双重的。
    如果这都被猜出密码,无非就是社工,要么就是本地嗅探或者C网嗅探的吧。
    otakustay
    otakustay
    Sep 6, 2013
    15
    @ichou 原来现在的md5字典已经连常用的盐也算在内了啊……话说如果我的加盐是把明文最后3个字符当盐,这种方案还能不能字典?
    jimrok
    jimrok
    Sep 6, 2013
    16
    要加随机盐啊,盐值要随机够大,混合后就不容易破解了。
    xhacker
    xhacker
    Sep 6, 2013
    17
    @msputup: 双重的很常见,大多数彩虹表里都有。
    jjplay
    jjplay
    Sep 6, 2013
    18
    替换字符

    a => c
    b => k
    c => 9
    e => ;

    然后再分割两组 调换位置,再逆变加密下,嘿嘿
    bd572db
    bd572db
    Sep 6, 2013
    19
    直接在现有算法基础上,再套一层强力算法,数据库里加一列,在现有密文基础上,再次加密,放到新列里

    我遇到和你一样的情形,原有的算法,太过简单
    bd572db
    bd572db
    Sep 6, 2013
    20
    这样可以迅速调整,且用户完全不会察觉
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   3157 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 73ms · UTC 10:45 · PVG 18:45 · LAX 02:45 · JFK 05:45
    ♥ Do have faith in what you're doing.