Mif*_*Fox 10 language-agnostic security hash
假设我有一个用户设置表,如下所示:
CREATE TABLE `users` (
`id` INTEGER PRIMARY KEY,
`name` TEXT,
`hashed_password` TEXT,
`salt` TEXT
)
Run Code Online (Sandbox Code Playgroud)
创建用户时,会生成随机生成的salt,并将其与结果一起存储在数据库中get_hash(salt + plaintext_password).
我想知道如果恶意用户获取这些数据,他们是否可以使用它来破解用户的密码?如果是这样,有什么方法可以防止它?
Luk*_*keH 17
不,他们没有用武之地.
只要你为每一行使用一种独特的盐,那么盐就可以防止减缓攻击速度.攻击者需要进行暴力攻击,而不是使用彩虹表来防止密码哈希.
正如评论中所提到的,你应该确保盐是合理的大小.
Salting在UNIX/etc/passwd文件中引入(或至少变得流行),这是世界可读的.通常假设破解者已知盐和加密密码.salt的目的是减慢破解过程(因为相同的密码不会映射到相同的加密字符串); 它本身并不是一个秘密.