0
点赞
收藏
分享

微信扫一扫

基于django的 md5加密

仲秋花似锦 2022-04-07 阅读 51
django

基于django的 md5加密

md5相关知识点(百度百科)

MD5信息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。

1前提知识点

1.1.特点

1.长度固定:

不管多长的字符串,加密后长度都是一样长
作用:方便平时信息的统计和管理

2.易计算:

字符串和文件加密的过程是容易的.
作用: 开发者很容易理解和做出加密工具

3.不可逆性

你明明知道密文和加密方式,你却无法反向计算出原密码.
作用:基于这个特点,很多安全的加密方式都是用到.大大提高了数据的安全性

4、抗修改性:
即便修改一个字节,计算出来的MD5值也会巨大差异

5、抗碰撞性:
知道MD5值,很小概率找到相同MD5值相同的原数据

1.2关于撞库破解:

这是概率极低的破解方法,原理就是:

1.建立一个大型的数据库,把日常的各个语句,通过MD5加密成为密文,不断的积累大量的句子,放在一个庞大的数据库里.

2.比如一个人拿到了别人的密文,想去查询真实的密码,就需要那这个密文去到提供这个数据库的公司网站去查询.

这就是撞库的概念.

1.3关于MD5加盐:

比如我的银行密码是”12345”

1.得到的MD5是:827ccb0eea8a706c4c34a16891f84e7b

2.一个人截取到这个密文,那么通过撞库肯定容易撞出12345.

3.我们要做的就是加盐,银行密码还是”12345”,然后我把银行密码加上我特定的字符串才计算MD5 ,这样被撞库获得密码的可能性大大降低

2 实际操作

2.1在python中正常加盐方法

在这里插入图片描述

2.2在django中加盐方法

django在settings文件的 secret_key 中随机自动保存了一个字符串
在这里插入图片描述

基于自动保存的字符串,导入setting文件,避免手动加盐最后在其他py文件进行基于我们自定义的md5函数的调用

from  django.conf import settings
import hashlib

def md5(data_string):

    obj=hashlib.md5(settings.SECRET_KEY.encode("utf-8"))
    obj.update(data_string.encode("utf-8"))
    return obj.hexdigest()
from app01.utils.encrypt import md5

        #字段返回什么 此字段(confirm_password)返回数据库的就是什么
        return md5(pwd)
举报

相关推荐

0 条评论