python如何加密用户名和密码_python django 自定义用户 如何加密密码

这篇博客介绍了在Python Django应用中如何使用hashlib库的sha1方法对用户密码进行加密处理。在用户注册和登录时,都会对密码进行加密,确保数据的安全。在models.py中定义User模型时直接加密密码,或者在views.py中处理,遵循了MVC模式的数据处理原则。在数据库中,所有用户的密码都以加密形式存储。
摘要由CSDN通过智能技术生成

python+django中使用hashlib库对用户密码进行加密处理

使用hashlib库的sha1对数据进行加密

如:

import hashlib

password = hashlib.sha1(fr.cleaned_data['password']).hexdigest()

其中fr.cleaned_data['password']是从表单获取到的用户密码

用户登陆的时候,也需要对密码进行加密处理后再进行验证,否则会登陆失败

如下是例子:

views.py

deflogin(request):

username = request.session.get('username',None)

Tasklist = Task.objects.order_by("-id")[0:10]

if request.method == "POST":

fr = loginForm(request.POST)

if fr.is_valid():

username = fr.cleaned_data['username']

password = hashlib.sha1(fr.cleaned_data['password']).hexdigest()    #对数据进行sha1加密

name = User.objects.get(user = username).name

user = User.objects.filter(user=username,passwd=password) #数据过滤,这里如果都匹配则返回值,

if user: #判断这个是否有效值

request.session['username'] = name

return HttpResponseRedirect("/")

else: #无效

return HttpResponseRedirect("/login.html",context_instance=RequestContext(request))

else:

fr = loginForm()

return render_to_response('login.html',locals(),context_instance=RequestContext(request))

我在用户注册的时候,是直接在modes.py中进行密码处理的:

class User(models.Model):

user = models.IPAddressField(unique=True)

passwd = models.CharField(max_length=100)

name = models.CharField(max_length=100,unique=True)

post = models.CharField(max_length=100)

phone = models.CharField(max_length=100)

email = models.EmailField(max_length=100)

qq = models.CharField(max_length=100)

permissions = models.CharField(max_length=10)

def __unicode__(self):

return self.user

def save(self,*args,**kwargs):

self.passwd = hashlib.sha1(self.passwd+self.user).hexdigest()

super(User,self).save(*args,**kwargs)

当然,这个也可以直接在views.py中进行加密处理,但是牛人说了,在MVC模式下,数据处理应该交给models处理

下图是数据库中得到的密码:

passwd字段,都是经过sha1加密码处理的,如第一个帐号为drfdai的真实密码是:111111

72a562d8662d43db93d84733c69813c1.jpg

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值