密码加盐哈希中,盐好像可以不存到数据库吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
fstar
V2EX    编程

密码加盐哈希中,盐好像可以不存到数据库吗?

  •  1
     
  •   fstar 2022-04-13 13:10:43 +08:00 2615 次点击
    这是一个创建于 1282 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我看有些文章说 salt 需要存到数据库。

    但有些加密库不需要,比如 bcryptjs 。

    https://github.com/dcodeIO/bcrypt.js#usage---sync

    用法为:

    To hash a password:

    var bcrypt = require('bcryptjs'); var salt = bcrypt.genSaltSync(10); var hash = bcrypt.hashSync("B4c0/\/", salt); // Store hash in your password DB. 

    To check a password:

    // Load hash from your password DB. bcrypt.compareSync("B4c0/\/", hash); // true bcrypt.compareSync("not_bacon", hash); // false 

    Auto-gen a salt and hash:

    var hash = bcrypt.hashSync('bacon', 8); 

    这是什么原理?

    我猜它是不是给明文密码又哈希了一次,作为 salt 。因为可以通过明文密码计算出 salt ,所有 salt 不需要入库。

    如果确实这是这样,大家认为这两种做饭各有什么优缺点?

    第 1 条附言    2022-04-13 14:14:53 +08:00
    发现 bcryptjs 库其实是将 salt 和哈希后的密码拼到一起了。
    所以数据库中,password 字段同时保存着( 1 )随机生成的 salt 和( 2 )加盐哈希后的密码。也就是一个字段存了两个字段的信息,感觉是一个种挺巧妙的做法。
    8 条回复    2022-04-14 11:24:00 +08:00
    lostpg
        1
    lostpg  
       2022-04-13 13:18:03 +08:00 via Android
    把明文密码哈希作为盐和不存盐是两回事,不保留盐的话以后验证密码时盐靠猜的话,那算力怕不是很够用...
    rekulas
        2
    rekulas  
       2022-04-13 13:21:33 +08:00
    不清楚他具体算法,但如果是根据明文计算的话-那这种盐也只能防止彩虹表,定向爆破难度会降低,安全性更弱

    aes 的做法是盐随机生成放到密文里面,所以每次生成密文都可以不一样但又不需要单独保存盐-但是同上也只能防止彩虹表爆破防不了定向
    R18
        4
    R18  
       2022-04-13 13:33:42 +08:00
    他就是把 salt 放到加密好的密文里,每次解密的时候先从密文读取 salt 。这本质上还是存储了 salt 啊。
    jimages
        5
    jimages  
       2022-04-13 13:34:02 +08:00
    bcrypt 的 salt 存在密文里面的。当 check 的时候,会从密文中取出 salt 和 cost 参与计算。
    fstar
        6
    fstar  
    OP
       2022-04-13 13:38:58 +08:00
    @jimages 懂了,一个字段存两个字段的内容。
    lovelylain
        7
    lovelylain  
       2022-04-13 13:43:59 +08:00 via Android
    相同密码用 bcrypt hash 两次结果不一样,显然是把盐存在了结果里
    night98
        8
    night98  
       2022-04-14 11:24:00 +08:00
    bcrypt 是方便开发者,盐直接放到生成的结果里了,用这种密码加密算法主要是为了防止脱裤后人家暴力破解计算用户的密码
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5168 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 58ms UTC 09:16 PVG 17:16 LAX 02:16 JFK 05:16
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86