V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
abcdabcd987
V2EX  ›  程序员

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

  •  
  •   abcdabcd987 ·
    abcdabcd987 · 2015-09-25 15:03:53 +08:00 · 5019 次点击
    这是一个创建于 3376 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最早用 md5 ,后来加盐,再后来换 sha 系列,然后现在改成了 PBKDF2 ……

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

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

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

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

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

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

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

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

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