加盐

彩虹表

彩虹表就是在网上搜集的各种字符组合而成的加密结果

可以想象,如果用户密码比较简单,为,那么这个通过某种加密函数,即使变得再复杂,,或者,都架不住表中本来就保存了简单密码的加密结果:

原始密码 一次加密 二次加密
# we get after_code = AC;
SELECT * FROM table WHERE 一次加密=AC;
SELECT * FROM table WHERE 二次加密=AC;

加盐

我们人为的通过一组随机字符,与用户原密码的组合形成一个新的字符,从而增加破译的难度

CREATE TABLE "user"(
    "id" int(11) NOT NULL AUTO_INCREMENT,
    "username" varchar(255) COLLATE utf8mb4_bin DEFAULT NULL COMMENT "用户名",
    "password" varchar(255) COLLATE utf8mb4_bin DEFAULT NULL COMMENT "密码",
    "salt" char(4) COLLATE utf8mb4_bin DEFAULT NULL COMMENT "盐",
    PRIMARY KEY ("id")
) ENGIN=InnoDB DEFAULT=utf8mb4 COLLATE=utf8mb4_bin;

然后在前端,定义两个