在验证密码时,一般时将输入的密码进行md5加密后,再与数据库已经加密的md5密码进行匹配,因此,可以直接在初始化model的时候给password进行md5加密,加密的方法如下:

         通过重写save()方法来实现,同时一定需要使用super调用父类方法,否则默认的行为不会被触发,数据库也不会被操作。

         需要先导入一个模块:       

     import hashlib

       model的代码:  

1. 在每次初始化和对model进行修改和新增的时候触发:

class Student(TimestampModel):
    name = models.CharField(max_length=Constant.db_name_length, verbose_name='学生昵称', null=False)
    phone = models.CharField(max_length=Constant.db_phone_length, unique=True, verbose_name='手机号', null=False)
    password = models.CharField(max_length=Constant.db_password_length, verbose_name='密码')

    class Meta:
        verbose_name_plural = '学生'
        verbose_name = '学生'
        db_table = 'student'
        ordering = ['create_datetime']

    def save(self, *args, **kwargs):
        md5 = hashlib.md5()
        md5.update(self.password.encode())
        self.password = md5.hexdigest()
        super(Student, self).save(*args, **kwargs)

 

2. 在需要的时候才触发加密:

      同样是先导入模块:

 import hashlib
def md5(self, pwd):
    md5 = hashlib.md5()
    md5.update(pwd.encode())
    saltpassword = md5.hexdigest()
    return saltpassword

sha1 加密的方法和md5相似,sha1:

def sha1(key):
    sha1_key = hashlib.sha1()
    sha1_key.update(key.encode("utf-8"))
    return sha1_key.hexdigest()

 

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐