安全加密的MD5加盐操作,盐,添加在菜品中的佐料,让口味更精彩丰富。同样,加盐操作是为了让密码更为复杂,保密性更强。一般而言,“盐”指的是计算机动态生成的随机码,这个随机码会与密码一起被MD5进行散列计算,再与生成序列一同存进数据库。再次进行登录验证密码时,由于经过散列计算处理的数据不可逆向恢复(炒熟的菜不可能再变成原材料),所以需通过对输入密码结合随机码进行散列计算,将得到的值再去数据库进行匹配。输入的密码就像是做菜的原材料,在经过同样的加工工序以及盐(随机码)的调味之后,将得到的菜品与样例菜品进行全方位对比,只有完全相同时才能算作合格。
模仿做出完全相同菜品的关键是获得“秘制酱料”,可通过两种方式得到:不断尝试各种原料的搭配,最终试制成功(通过不断生成密码尝试匹配);或者直接将酱料配方偷取到手(获得秘钥)。
可见,“盐”是为了提高密码的复杂度,增大正面暴力破解的难度。为了保证安全,应该将盐与生成序列分机存放。在《大型网站技术架构:核心原理与案例分析》中,讲到为了保证秘钥的安全,一般会将秘钥分为数份并交由不同的人员保管,每人只有自己掌握的那部分秘钥,没有任何其它部分的数据。由此降低因为一人被窃取秘钥导致数据库被破解的风险。