我有一个 django 登录机制,它使用 django 来存储密码的散列版本。然后我有一个桌面应用程序需要通过服务器进行身份验证。但是,我不知道如何计算该哈希值...
现在,我发布到我的登录页面,客户的用户名和密码(没有散列),这是超级不安全的。(运行 alpha)我知道另一种方法是在发送之前和接收之后使用新的散列函数散列和取消散列,但我想我宁愿使用相同的。
我有一个 django 登录机制,它使用 django 来存储密码的散列版本。然后我有一个桌面应用程序需要通过服务器进行身份验证。但是,我不知道如何计算该哈希值...
现在,我发布到我的登录页面,客户的用户名和密码(没有散列),这是超级不安全的。(运行 alpha)我知道另一种方法是在发送之前和接收之后使用新的散列函数散列和取消散列,但我想我宁愿使用相同的。
我不知道为什么从您的桌面应用程序发布未经哈希处理的密码会比从浏览器发布更不安全,这当然是您每次登录网站时都会做的事情。这是完全相同的机制,应该以完全相同的方式完成。
在任何情况下,正如 yaccz 指出的那样,如果不让桌面应用程序以某种方式访问您的密钥,您就无法重现散列机制。即使它不能立即访问,仅仅存在于客户端计算机上的安全风险也比您想象的要大得多。
你想错了。
哈希通常以格式存储<function>$<hash>
使用的<function>
是广为人知的算法
<function>
您可以在 django中轻松找到这些背后的代码
即使您从客户端发送哈希,它也可以像明文密码一样被拦截,攻击者可以使用它来访问提供给使用它的客户端的 API。
我不太确定这一点,但我认为散列是加盐的SECRET_KEY
,您需要提供给客户端才能创建散列,因此泄漏了非常重要的信息。
散列是一种单向功能,之后您无法取消散列。
如果您想增加安全性,请使用 SSL 或其他基于非对称加密的方案,如 gnupg 或 ssh 密钥。