我需要在Swift中加密密码,并将其发送到我的web服务器以存储在数据库中。有什么最佳做法吗?我见过AESCrypt.encrypt(userPassword, password: API_AUTH_PASSWORD)
,但我不太确定这是否足够(盐,等等)。此外,在服务器本身上,如何比较散列密码以进行登录身份验证?我正在使用PHP。基本上,我想问的是,Swift中是否有一种普遍接受的加密方法,可以在基于PHP的web服务器上进行散列和密码检查。
发布于 2015-06-05 19:04:26
见这个问题。您应该了解散列在客户端的含义:
appname + username
)可以防止服务器漏洞影响任何其他站点。
正如链接所提到的,您可能仍然希望在服务器上使用“快速”哈希(例如SHA-512
)。这限制了只有数据库被破坏时的损坏。
在服务器上,哈希应该在恒定时间内与hash_equals
进行比较。password_compat
有代码早期版本的PHP。
当使用客户端散列时,解消建议在服务器端使用随机盐。另一种&更常见的情况是在服务器上执行所有哈希操作。
有关PHP,请参见password_hash
、password_verify
和password_needs_rehash
。
如果您使用的是较早版本的PHP,就会有康帕特。
发布于 2015-06-05 17:14:46
最佳做法是不要将密码存储在数据库中。
您应该执行单向哈希函数(如SHA )并存储哈希值。当您需要对用户进行身份验证时,散列用户输入的密码并比较哈希值。在散列中使用一个盐分值来进一步提高安全性。
https://stackoverflow.com/questions/30677899
复制