我正在编写一个小型 web 应用程序,我不想将登录密码作为明文传输。由于我没有可用的 SSL,我编写了一个一次性质询系统,该系统使用登录表单发送一个随机字符串,然后用于在客户端使用 HMAC-SHA256 对密码进行哈希处理。我使用随机挑战字符串作为消息,使用用户密码作为 HMAC 的密钥。
我知道自制解决方案通常是一个坏主意,所以我想问一下我是否在这里犯了错误。
编辑:似乎有一个误解,我不是在问密码存储或挑战/响应系统,而是关于 HMAC 和密码传输。澄清一点:我的第一个版本是HMAC(msg=password, key=challenge),因为我想,嗯,我要传输到服务器的消息是用户的密码。但后来我注意到挑战字符串并不完全是一个秘密密钥,所以我换了它,但这让我想到我是否可能做错了什么,我想我最好问一下。