Django —— 加密

倪鹏
2023-12-01

Django —— 加密

今天介绍一下 django当中的加密手段

1.md5加密

# 加密
import hashlib
def md5(raw):
    # md5加密实例化
    md5 = hashlib.md5()
    # 需要的话进行utf8编码
    md5.update(raw.encode('utf8'))
    return md5.hexdigest()

2 . sha256加密

import hashlib
import random
import re
# 封装sha256
def sha56(raw):
    # 实例化sha256对象
    sha56 = hashlib.sha256()
    # 把要加密的密码,进行update操作并转成utf-8,不写默认是utf-8
    sha56.update(raw.encode('utf-8'))
    # 返回一个sha56的16进制的格式
    return sha56.hexdigest()



# 加盐,随机盐
def random_safe(n=5):
    # 定义一个简单的字符串
    str = '23456789abcdefgjkmnpqrestuvwxyz'
    # 定义一个空值,将每次循环的随机数,拼接到ret上。然后返回。
    ret = ''
    for i in range(n):
        # len出字符串的长度,利用下标进行随机抽出。
        ret += str[random.randint(0,30)]
    return ret


# 正则验证邮箱
def check_email(email):
    ret = re.match(r'(\w+)@(\w+)\.(\w){2,}$',email)
    if ret:
        # 满足条件
        return True
    else:
        # 不满足条件
        return False

# 正则验证密码
def check_passwd(password):
    pattern = re.match("^(?=.*[a-zA-Z].*)(?=.*[\d].*)(?=.*_.*).{6}$",password)
    if pattern:
        return True
    else:
        return False

3. 时间戳封装

import random
from datetime import datetime
def generater_img(ext='pag'):
    # 格式化时间+随机数+文件的后缀名
    return datetime.now().strftime('%Y%m%d%H%M%S') + str(random.randint(10000,99999)) + '.' + ext


4. 删除外键关系

Django取消级联删除----删除外键关系
user = models.ForeignKey(User,blank=True,null=True,on_delete=models.SET_NULL)
并且SET_NULL只有在null为True的时候,才可以使用

# 删除学生外键关系,根据id把相应的数据查询出来后,把外建改成None就OK了
class Pop_student(APIView):
    def get(self,request):
        mes={}
        id = request.GET.get('id')
        stu = Student.objects.filter(id=id).first()
        stu.teacher_id=None
        stu.save()
        mes['code']=200
        mes['message']='删除成功'
        return JsonResponse(mes)

以上是django当中的加密手段,希望对同学们有所帮助

 类似资料: