0

我有 ac# 应用程序,我正在尝试使用 php 和 mysql 编写一个基本的登录表单来存储密码。

我正在使用 SHA512 + 随机盐来存储密码,所以目前我正在为密码执行此操作。

哈希(密码+随机盐)+随机盐;

所以盐被附加到哈希上,然后发送到服务器并存储。

现在我的问题是比较某人何时尝试登录。用户不知道盐,我不想将纯文本密码发送到服务器,所以我有点卡住了。

我应该加密密码并将其发送到服务器,让服务器向用户发送盐还是有更好的方法来实现这一点?

我只是想确保任何制作帐户密码的人都是适度安全的。

提前致谢

4

2 回答 2

1

通常,您应该将散列密码和随机盐值存储在数据库中。

当用户进行身份验证时,他或她的用户名和密码将被发送到服务器(最好通过 SSL 安全连接)。在那里,您使用用户名从数据库中检索盐值和散列密码以进行比较。

最重要的是,您永远不应该存储纯文本密码或通过不安全的连接发送它们。

有关详细信息,请参阅密码散列、盐和散列值的存储

于 2011-11-02T01:11:31.010 回答
0

这几乎是不可能的。就像 Derek 所说,正确的做法是获取 SSL 证书并通过该证书发送纯文本密码。

Salting is to protect a stolen password database from revealing everyones password. But if the hash step is done on the client, the value in the database is the exact string that is sent over the network.

If you really cannot use SSL, http://en.wikipedia.org/wiki/Challenge-response_authentication#Cryptographic_techniques describes a way to avoid sending the password (or the hash, which is almost the same).

于 2011-11-02T01:22:54.390 回答