密码与身份安全技术解析
1. 密码验证与加密
1.1 密码验证流程
当用户登录时,若密码相同,使用相同的盐对密码进行加密,并与存储的值进行比较。若匹配,则可安全地让用户登录。部分包(如 bcrypt)提供了比较方法,简化了这一过程。以下是使用 bcrypt 进行密码比较的代码示例:
bcrypt.compare(password, hash, function(err, res) {
//returns true or false
});
在上述代码中, password 是用户登录时输入的原始密码, hash 是从数据库中获取的哈希值。结果为 true 或 false ,取决于两者是否匹配。
1.2 密钥拉伸技术
bcrypt、scrypt 和 PBKDF2 等加密算法有效的一个关键概念是密钥拉伸技术。由于大多数人设置的密码长度和复杂度不足,难以抵御暴力攻击,密钥拉伸技术应运而生。它能将可能较弱的密码转换为具有足够长度和复杂度的加密密钥,使暴力攻击等手段不再可行。
在加密哈希函数中,密钥拉伸通过在循环中重复应用哈希函数来实现,直到获得所需长度和复杂度的哈希值。之前在哈希函数示例中提到的迭代次数,就是密钥拉伸概念的具体实现。
1.3 重新计算哈希值
在某些情况下,可能需要为用户生成新的安全密码哈希值,例如:
- 由于摩尔定律,硬
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



