Hash Xcode加密和哈希密码

Hash Xcode加密和哈希密码,hash,passwords,salt,Hash,Passwords,Salt,我有一个iPhone应用程序,要求用户注册后才能使用。我抓取通常的信息,包括密码。 我正在将用户注册详细信息保存到我的服务器,并通过在密码前添加一个salt字符串,然后对结果进行散列来加密 我定义了一个salt字符串,用于在我的所有密码前加上前缀,但我知道salt应该是每个新密码随机生成的字符串 这一切都很好,我设法为每个密码生成一个唯一的字符串 当我在注册时保存密码时,salted/hash值被发送到服务器上的数据库,并保存在“password”列中 现在假设用户注销,然后尝试使用保存的密码重

我有一个iPhone应用程序,要求用户注册后才能使用。我抓取通常的信息,包括密码。 我正在将用户注册详细信息保存到我的服务器,并通过在密码前添加一个salt字符串,然后对结果进行散列来加密

我定义了一个salt字符串,用于在我的所有密码前加上前缀,但我知道salt应该是每个新密码随机生成的字符串

这一切都很好,我设法为每个密码生成一个唯一的字符串

当我在注册时保存密码时,salted/hash值被发送到服务器上的数据库,并保存在“password”列中

现在假设用户注销,然后尝试使用保存的密码重新登录。 他们输入他们的密码,但是我对发送的密码进行salt和hash处理,它进入数据库检查,与任何密码都不匹配,因为登录密码被一个新的随机salt字符串进行salt/hash处理

我该如何处理这个问题,或者我是否对流程感到困惑

我应该为每个新密码生成一个新的随机salt字符串,还是只为所有密码使用1个salt字符串

今天的password_hash()函数通常在生成的哈希值中包含salt明文。通过这种方式,您可以将哈希和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进行加密