我听朋友说:“加盐可以抵御黑客”,这令我感觉非常疑惑,请告诉我在服务器上撒盐来抵御黑客的原理。还是我理解错误?
     1 
                    
                    irever      2021-03-30 16:49:52 +08:00 
                    
                    加盐是针对密码,防止被破译,保护明文 
                 | 
            
     2 
                    
                    putaozhenhaochi      2021-03-30 16:53:08 +08:00 via Android    盐已经过时了。现在流行孜然 
                 | 
            
     3 
                    
                    PeakFish      2021-03-30 16:55:27 +08:00 
                    
                    @putaozhenhaochi 哈哈哈,你想逗死我,继承我的蚂蚁花呗 
                 | 
            
     4 
                    
                    Cooky      2021-03-30 16:57:11 +08:00 via Android 
                    
                    盐是避难所的货币🐶 
                 | 
            
     5 
                    
                    Cooky      2021-03-30 16:57:21 +08:00 via Android 
                    
                    盐是避难所的货币( 
                 | 
            
     6 
                    
                    apostle      2021-03-30 16:58:28 +08:00 via Android    指一类金属离子或铵根离子( NH4+)与酸根离子结合的化合物 
                 | 
            
     7 
                    
                    oott123      2021-03-30 16:58:39 +08:00     | 
            
     8 
                    
                    PeakFish      2021-03-30 16:58:44 +08:00 
                    
                    楼主搜索 HMAC 
                 | 
            
     9 
                    
                    mcone      2021-03-30 16:59:29 +08:00 
                    
                    
                 | 
            
     10 
                    
                    lokya      2021-03-30 17:04:58 +08:00 
                    
                    撒盐空中差可拟 
                 | 
            
     11 
                    
                    misaka19000      2021-03-30 17:07:57 +08:00 
                    
                    这种查一下就能得到结论的东西也能问个问题 
                 | 
            
     12 
                    
                    sambawy      2021-03-30 17:09:24 +08:00    因为盐影响钙吸收,黑客顺着网线过来的时候会接触到过多的盐,导致优质钙白白的流失,身体就没有强度,无法进一步破坏服务器。 
                 | 
            
     13 
                    
                    namelosw      2021-03-30 17:10:13 +08:00 
                    
                    这都不懂?国外不是有很多人拿盐往肩膀后面撒,可以驱散恶魔。道理都差不多。 
                 | 
            
     14 
                    
                    superrichman      2021-03-30 17:12:02 +08:00 via iPhone 
                    
                    服务器撒盐可以形成结构松散的保护膜,(物理)黑客入侵服务器的时候会因为表面有盐手滑偷不走服务器,所以加盐可以抵御黑客。 🐶 
                —— 正经解释,加盐是用来抵御彩虹表攻击的。  | 
            
     15 
                    
                    eason1874      2021-03-30 17:15:09 +08:00    用户设置密码 abc,如果数据库保存明文 abc,一旦泄露就等于泄露密码,黑客就可以登录。 
                所以服务器不存密码明文,存摘要的哈希值,比如存 md5("abc") 的结果 900150983cd24fb0d6963f7d28e17f72,但登录只接受明文输入,不接受哈希值。 当黑客脱裤没拿到明文 abc,只拿到了哈希值 900150983cd24fb0d6963f7d28e17f72,他们就要想办法知道哈希值对应哪个明文。于是他们就穷举出尽可能多字符串的哈希值,做成一个表,叫彩虹表。拿着表逐个去对,哈希值对上了就知道是哪个明文了。 为了防止彩虹表这种破解方式,于是就有了盐 salt,在摘要的时候加进去,比如 md5("a 盐 1b 盐 2c 盐 3"),这样一来摘要输入变长了,简单的彩虹表就不够用了,得制作足够大的彩虹表去对,而且就算你对出来了你还要知道哪部分是盐哪部分是真正的密码。  | 
            
     16 
                    
                    junziyangyang      2021-03-30 17:17:43 +08:00 
                    
                    @putaozhenhaochi 大哥,这回答精辟独到 
                 | 
            
     17 
                    
                    dapang1221      2021-03-30 17:19:06 +08:00 
                    
                    
                 | 
            
     18 
                    
                    kaiki      2021-03-30 17:20:46 +08:00    你的密码就是你炒菜的原材料,比如你炒个番茄炒西红柿,那么黑客吃一口知道这道菜是用啥原材料做出来的,就知道你密码了,这个是你洒一袋盐进去,黑客吃一口直接吐了,根本吃不到番茄和西红柿,就无法破解密码了。 
                 | 
            
     19 
                    
                    RobertLyu      2021-03-30 17:23:21 +08:00 via iPhone 
                    
                    啊,这篇文章读得我口舌生津。 
                 | 
            
     20 
                    
                    imn1      2021-03-30 17:28:09 +08:00    撒盐是驱鬼辟邪的一种操作 
                 | 
            
     21 
                    
                    wanguorui123      2021-03-30 17:28:12 +08:00    盐就是让黑客觉得很咸,使到手的食物很难下口的调料,这个调料就是盐很重口的盐。 
                盐混淆了每个加密样本的共同特征,让黑客很难用通用的模型进行逆向分析。  | 
            
     22 
                    
                    wakzz      2021-03-30 17:41:31 +08:00 
                    
                    日本那边服务器上线要请巫女去开光,撒盐辟邪 
                 | 
            
     24 
                    
                    daytick      2021-03-30 18:00:01 +08:00 
                    
                    给认真回答的人点个赞👍🏻 
                 | 
            
     26 
                    
                    loading      2021-03-30 18:03:12 +08:00 via Android 
                    
                    搜索  hash salt 
                 | 
            
     27 
                    
                    oy9r   OP 不知道怎么搜,搜了全是 NaCl 
                 | 
            
     28 
                    
                    C0VN      2021-03-30 19:53:59 +08:00 
                    
                    很多用户会使用相同(或者很弱)的口令,那么存储在数据库中的密码就会是相同的。(如何存储用户的密码这个过程还需要科普吗?) 
                黑客获取到用户的密码后要反向得到用户的口令,一般通过提前准备好的表来查对应关系,哪些经常出现以及容易出现的自然就会在表中被查到(把每一个可能的口令都放到表里将是巨大的),所以我们擅做主张给用户的口令加上一点点的东西让它们看起来不那么简单和弱以及各不相同,这样简单的加上点东西就会就给黑客带来很大的麻烦。  | 
            
     29 
                    
                    wmwgijol28      2021-03-30 20:18:24 +08:00 via iPhone 
                    
                    @putaozhenhaochi 🤣🤣🤣 
                 | 
            
     30 
                    
                    redtea      2021-03-30 20:26:46 +08:00 
                    
                    用盐也不安全,如果盐是一样的,黑客拿到 hash 后的密码还是能破解的,用 bcrypt 。 
                 | 
            
     31 
                    
                    zhangfuguan      2021-03-30 22:54:01 +08:00 
                    
                    NaCl 
                 | 
            
     32 
                    
                    pabupa      2021-03-30 23:45:16 +08:00 
                    
                    hash(pwd) => h1,虽然 h1 很难推出 pwd,但是如果数据多了,就还是可以推出来。 
                hahs(pwd+NaCl) => h2, 即使黑客通过 h2,找出了(pwd+NaCl),也不能直接推出 pwd 。 但是如果整个数据库都没了,而刚好很多账户的 h2 都能被反推,那这样还是不行……  | 
            
     34 
                    
                    kimwang      2021-03-30 23:50:41 +08:00 via Android 
                    
                    
                 | 
            
     36 
                    
                    X-Force      2021-03-31 03:26:36 +08:00 
                    
                    难道不是加些盐可以驱魔辟邪,让系统更安全么? 
                 | 
            
     37 
                    
                    yeqizhang      2021-03-31 08:10:56 +08:00 via Android 
                    
                    氯化钠,食用盐还要加点碘 
                 | 
            
     39 
                    
                    tabris17      2021-03-31 09:54:00 +08:00 
                    
                    题外话,为什么要把参与哈希运算的随机字符串叫做 salt ? 而不是 sugar 、pepper 、chili ? 
                 | 
            
     40 
                    
                    tonyaiken      2021-03-31 13:11:49 +08:00 via iPhone 
                    
                    @misaka19000 同感,直接搜一下密码加盐就知道了 
                 | 
            
     41 
                    
                    mritd      2021-03-31 13:12:25 +08:00 via iPhone 
                    
                    首先一般数据库都不会明文存储用户密码,大部分都是采用 md5 sha 之类的 hash 算法先对密码计算 hash 值,然后将计算结果存储在数据库里,这样用户登录时重新计算并对此 hash 值就可以知道密码是否正确 
                 | 
            
     42 
                    
                    mritd      2021-03-31 13:14:41 +08:00 via iPhone 
                    
                    但问题在于,现在有有人收集了海量常用密码的 hash 结果,也就是说一旦被脱裤,黑客可以通过 hash 对此来验证用户的真实密码,所以这个时候一般会放一点 “盐” 和用户密码做混淆,然后再 hash 
                 | 
            
     43 
                    
                    mritd      2021-03-31 13:17:04 +08:00 via iPhone 
                    
                    大多数 hash 算法都有两个效应: 雪崩效应和定长输出,雪崩即原始的微小改变会带来结果的巨大改变,从而抵御推测,定长输出导致原始数据 hash 后不可逆 
                 | 
            
     44 
                    
                    shm7      2021-03-31 13:19:11 +08:00 via iPhone 
                    
                    让人猜不透的随机数 
                 | 
            
     45 
                    
                    lanbatian      2021-03-31 15:28:02 +08:00 
                    
                    加盐主要是指数据交互的时候增加一些加密算法。常见的有 RSA 、AES 、国秘算法等,还有双向加解密和单向加解密,SSL 就是常见的双向加解密。 
                 |