Django中密码的加密、验密、解密操作-make_password,check_password

这篇文章主要介绍了Django中密码的加密、验密、解密操作,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下

  1. from django.contrib.auth.hashers import make_password, check_password

如上图所示,django.contrib.auth.hashers即为django内置的加解密包。

小提示:

pycharm中的Python Console(如下图所示)可以执行django的语句,类似python解释器。

Django中密码的加密、验密、解密操作-make_password,check_password - 图1

Django中密码的加密

语句:

  1. make_password(原始密码[,固定字串][,加密方式])

return 加密后的密码

make_password(原始密码) 或 make_password(原始密码,None) 或 make_password(原始密码,’’):每次产生的密码均不同。

  1. >>> from django.contrib.auth.hashers import make_password
  2. >>> make_password('a')
  3. 'pbkdf2_sha256$120000$m7gXe6yy0hJd$4ML8hHFQMrGyAXXkJpz9C4MOu8RJ6IvH19fpJaSVz0c='
  4. >>> make_password('a')
  5. 'pbkdf2_sha256$120000$uD5csLIeBqWR$HvvTnZsUmATa+KBSCzRbRR5tYNaBab7VWpk2O4NfURU='
  6. >>> make_password('a',None)
  7. 'pbkdf2_sha256$120000$SG5CBgULfUew$alE84q7NAzkraQ2Gr1J61pPU6gXLlvCwA2E5H3d75cQ='
  8. >>> make_password('a',None)
  9. 'pbkdf2_sha256$120000$Kcq2i6cFokS0$tAaRf6CAFwaqmg9QDHFefTkzCusla2JqU+FKMkjiilk='
  10. >>> make_password('a','')
  11. 'pbkdf2_sha256$120000$qBmkLhQTZX8B$pXZ3PZkiPH3fBGjUQt+SsGFpYhIn3BHgACmE5bDdTK0='
  12. >>> make_password('a','')
  13. 'pbkdf2_sha256$120000$QR3QAh7MCF15$nAQVTKHEFks92NPmLY2S3odHeT7PoaFoIL7/etKs08w='
  14. make_password(原始密码,固定字串):产生相同密码。
  15. >>> from django.contrib.auth.hashers import make_password
  16. >>> make_password('a','a')
  17. 'pbkdf2_sha256$120000$a$l8oCmo99z83LSu7DX4AGnjHHpeVmecW3puc4ufA55mE='
  18. >>> make_password('a','a')
  19. 'pbkdf2_sha256$120000$a$l8oCmo99z83LSu7DX4AGnjHHpeVmecW3puc4ufA55mE='
  20. >>> make_password('a','abcd')
  21. 'pbkdf2_sha256$120000$abcd$JmTnyyEmsg4YsssiJU4yi0RDAvvJEnqjJOCTounGDc0='
  22. >>> make_password('a','abcd')
  23. 'pbkdf2_sha256$120000$abcd$JmTnyyEmsg4YsssiJU4yi0RDAvvJEnqjJOCTounGDc0='
  24. make_password(原始密码,固定字串,加密方式)
  25. >>> from django.contrib.auth.hashers import make_password
  26. >>> make_password('a','ab','pbkdf2_sha256')
  27. 'pbkdf2_sha256$120000$ab$KjztZyslBdOqErZyWGtDdB0FhGA/vx4CfL0dFDKbGzI='

使用示例

  1. from django.contrib.auth.hashers import make_password
  2. class AddView(View):
  3. def get(self, request):
  4. return render(request, "user/add.html")
  5. def post(self, request):
  6. username = request.POST.get('username')
  7. password = request.POST.get('password')
  8. .......
  9. #密码加密
  10. password=make_password(password)

验证密码

语句:

  1. check_password (原始密码, 加密后的密码)
  1. return True/False

当然也可以不需要加密,那么判断密码,则加密后的密码,直接用数据库中的原始密码。

另外一种验证登录密码的方式是authenticate(username=username, password=password),但这种方式的password必须是密文,不能是原始密码(明文)