V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
abcdabcd987
V2EX  ›  程序员

现在在数据库保存个密码也好麻烦啊……

  •  
  •   abcdabcd987 ·
    abcdabcd987 · Sep 25, 2015 · 5614 views
    This topic created in 3866 days ago, the information mentioned may be changed or developed.
    最早用 md5 ,后来加盐,再后来换 sha 系列,然后现在改成了 PBKDF2 ……

    然而还是有些站点在用明文保存密码……

    不禁感慨,保存个密码也好麻烦啊……

    话说大家都是怎么保存密码的?

    顺带附上刚刚照着资料写的 hash 密码的函数

    27 replies    2015-09-26 17:16:49 +08:00
    shoaly
        1
    shoaly  
       Sep 25, 2015
    md5 加盐 会有什么问题? 求科普
    abcdabcd987
        3
    abcdabcd987  
    OP
       Sep 25, 2015
    @shoaly 感觉一般来说,如果密码泄漏了,盐一般是跟着泄漏的。 md5/sha1 的问题在于,算起来太快了,在 GPU 上跑得飞快,所以不是很安全。
    tabris17
        4
    tabris17  
       Sep 25, 2015
    PHP 不是已经出了专门的加盐 hash 的慢算法么,我用 PHP 我不操心
    tianrunlin
        5
    tianrunlin  
       Sep 25, 2015
    被黑的可能性=网站价值 /加密算法复杂度
    网站价值太低,没有人关心的
    hack
        6
    hack  
       Sep 25, 2015
    我是 cmd5 付费解不开直接改 code 记录下账号密码还有 cookie ,管你们用啥加密算法,都要黑你了,就不会在乎你怎么处理密码~
    金融类的坐呼不服老子现上加密机,什么钱钱钱,买买买啊
    orFish
        7
    orFish  
       Sep 25, 2015
    @tianrunlin 最近泄露的很多都不小了哦
    zouxcs
        8
    zouxcs  
       Sep 25, 2015   ❤️ 1
    @zhicheng 不要使用第三方服务存储密码,比如 iCloud ,比如 1Password 。 推荐使用 PasswordSafe 管理密码。呵...呵...
    zhicheng
        9
    zhicheng  
       Sep 25, 2015
    @zouxcs 你开心就好。
    wy315700
        10
    wy315700  
       Sep 25, 2015
    scrypt
    colatin
        11
    colatin  
       Sep 25, 2015
    见过用对称加密保存密码的吗?
    windydays
        12
    windydays  
       Sep 25, 2015
    @colatin 真有人这么干?
    sivacohan
        13
    sivacohan  
    PRO
       Sep 25, 2015 via Android
    bcrypt
    pein
        14
    pein  
       Sep 25, 2015
    突然想到,根本不用搞这么复杂的,直接延迟返回验证结果就行了,比如延迟个 0.5s ,用户也感觉不到。 GPU 虽然算得快,但他不知道哪个是正确的,还是得一个个验证, 10 亿个结果你慢慢验证哈。。。
    loading
        15
    loading  
       Sep 25, 2015 via Android
    @pein 我们讨论的是你的数据库已经在我电脑里的场景!

    在线验证不加次数限制?
    loading
        16
    loading  
       Sep 25, 2015 via Android
    @abcdabcd987 一般不会用爆破来取得密码,成本太高,除非是针对特定用户。
    colatin
        17
    colatin  
       Sep 25, 2015
    @windydays 亲眼所见, 而且还加了 salt 哦
    jhdxr
        18
    jhdxr  
       Sep 25, 2015
    @pein
    @loading 就是有这样子的算法的,比如 blowfish ( bcypt 就是基于 blowfish 的),它相对于 md5 、 sha1 等慢的多,如果你穷举去破(哪怕在本地)也无法接受。
    以前见到过一份时间对比的。。但是现在找不到了_(:з」∠)_
    frittle
        19
    frittle  
       Sep 25, 2015
    通常用 bcrypt 。

    读过这个帖子,回帖值得参考。
    http://security.stackexchange.com/questions/211/how-to-securely-hash-passwords

    另外 Password Hashing Competition 的评选结果也出来了,有兴趣可以看看。
    https://password-hashing.net/candidates.html
    fantasticfears
        20
    fantasticfears  
       Sep 25, 2015
    前三个方法全部都是对安全和密码学没什么了解的时候的写法。只是现在大家都知道要用安全的方法存密码。

    安全,该做到的就都要做到,少了一个都会出事。
    loading
        21
    loading  
       Sep 25, 2015 via Android
    @jhdxr 这是治标不治本的,过好多年算力又上来了
    likexian
        22
    likexian  
       Sep 25, 2015
    密码是 123456 ,算法再叼也没用,存得好还要防用户,安全无处不在。
    pein
        23
    pein  
       Sep 25, 2015
    @loading 不好意思,跑题了。那还是 bcrypt 吧, laravel (一个 php 框架)现在默认自带的加密就是 bcrypt
    ruchee
        24
    ruchee  
       Sep 26, 2015
    password_hash
    zapper
        25
    zapper  
       Sep 26, 2015 via iPhone
    如果同时知道了密文密码和加密方式,可以反向解密出明文吗?求科普...
    abcdabcd987
        26
    abcdabcd987  
    OP
       Sep 26, 2015 via iPhone   ❤️ 1
    @zapper 加密的东西是一定要能解密的
    但是保存密码的时候我们并不是加密 而是利用某些不可逆的摘要算法 计算出一个 hash 值
    如果两个不同的输入得到了同样的 hash 值 那么两个密码都可以登入
    回到你的问题 对于密码 hash 来说 一般选择不可逆的 hash 所以是不可能知道原文的 因为理论上原文有无穷多个
    那密码的破解是怎么回事呢 前面说到只要 hash 值一样就认为密码正确 所以破解的方法就是穷举原文 直到找到一个 hash 值相同的
    shepherd
        27
    shepherd  
       Sep 26, 2015 via Android
    不行就 4096 次 bcrypt
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5560 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 98ms · UTC 03:43 · PVG 11:43 · LAX 20:43 · JFK 23:43
    ♥ Do have faith in what you're doing.