2012-05-17 106 views
1

据我所知,在摘要式身份验证中,客户端使用密码和服务器提供的随机值作为输入值进行不可逆计算。将结果传输给执行相同计算的服务器,并在客户端达到相同值时对其进行身份验证。由于计算是不可逆的,窃听者无法获得密码。django中的摘要式身份验证

保持眼睛上面的定义,我在Javascript中使用CryptoJS.HmacSHA256("password", "key")将信息发送到Django的服务器,现在的问题是:

我需要检查,在服务器中使用相同的逻辑,但Django的已经已经哈希密码以其自己的格式,例如使用pbkdf2_sha256

我应该使用一些像AES这样的可逆算法吗?我不认为有可能破解django的哈希算法,并为客户端写同样的东西?

回答

1

你为什么试图以这种方式进行身份验证?您不能使用djangos默认身份验证。

什么,你可以尽管这样做(例如)是:

  1. 创建一个新的模型,链接到用户,具有共享密钥和令牌
  2. 创建您自己的认证后端其中接受有符号值,验证有符号值,然后将用户登录到

我使用了this article中的详细信息来实现该算法。即使你不使用这种方法,你仍然需要创建自己的定制authentication backend

-1
  • AES不是散列算法。这是一种加密算法。
  • 您可以使用散列算法,如SHA1或MD5。