Xcode salting和哈希密码
我有一个iPhone应用程序,需要用户注册才能使用它。 我抓住通常的信息,包括密码。 我将用户注册详细信息保存到我的服务器,并且我正在通过在密码前加一个salt字符串进行加密,然后对结果进行散列处理。
我#定义盐字符串用来预先考虑到我的所有passwods,但我读的盐应该是每一个新的密码随机生成的字符串。
这一切都很好,我设法为每个密码生成一个唯一的字符串。
当我在注册时保存密码时,salted / hashed值将被发送到服务器上的我的数据库并保存在“密码”列中。
现在假设用户注销,然后尝试使用其保存的密码重新登录。 他们输入他们的密码,但然后我用盐和哈希密码发送,它进入数据库检查,它不匹配任何密码,因为登录密码被盐渍/散列一个新的随机盐串。
我该如何处理这个问题,或者我有困惑的过程?
我应该为每个新密码生成一个新的随机salt字符串,还是只对所有密码使用1 salt字符串?
今天,password_hash()函数通常在生成的散列值中包含salt明文。 这样你可以将散列和盐存储到同一个数据库字段中。
$2y$10$nOUIs5kJ7naTuTFkBy1veuK0kSxUFXfuaOKdOKf9xYT0KKIGSJwFa
| | | |
| | | hash-value = K0kSxUFXfuaOKdOKf9xYT0KKIGSJwFa
| | |
| | salt = nOUIs5kJ7naTuTFkBy1veu
| |
| cost-factor = 10 = 2^10 iterations
|
hash-algorithm = 2y = BCrypt
为了验证,他们提供了一个password_verify()函数,该函数将从存储的散列值中提取salt,并使用相同的salt来散列登录密码。 这两个哈希是可比的。
散列应在服务器端完成,通常将密码以明文形式发送到服务器,并使用HTTPS / SSL加密。
链接地址: http://www.djcxy.com/p/21847.html