Django 自编写哈希加密函数
哈希加密
该加密算法对于相同的字符串将会是一致的,同时,这种加密是单向的,无法反向编译出来,也就是说,想要对 加密后的数据进行比较,你需要将要比较的数据先进行加密,然后才能进行比较,当两者内容一致时,才会通过验证
当使用在登陆页面时,其流程时这样的:输入密码===>进行加密===>调用数据库===>进行比较===>验证通过===>返回session信息,进入登陆状态
```python
#导入哈希加密包
#在py3之后,md5包被移除,其功能被整合到hashlib包中
import hashlib
#创建一个新的哈希加密对象
h1 = hashlib.md5()
#在对象中添加要加密的字符串,该字符串需要先转化成二进制格式,即utf8
h1.update(str.encode(encoding=’utf8’))
#查看转码后的数据,hexdigest为十六进制模式
print(h1.hexdigest())
#查看转码后的数据,digest为二进制模式
print(h1.digest())1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
- 这里要注意的是,每次进行加密,都要重新创建一个哈希对象,也即是重新书写一遍==>h1 = hashlib.md5()
- 如果不进行重新定义的话,当加密时遇到相同的字符串,如"hello world"这样的字符串,将会出现"hello worldhello world"这样的叠加形式,所以需要重新定义
```python
# 哈希加密在view中的实现, 对创建时的密码以及登陆时的密码进行对应的加密
def make_password(mypass):
#生成md5对象
md5 = hashlib.md5()
# 定义加密对象
sign_str = mypass
# 转码
sign_utf8 = str(sign_str).encode(encoding='utf-8')
# 加密操作
md5.update(sign_utf8)
# 生成密文
md5_server = md5.hexdigest()
# 返回最终数据
return md5_server