Django中数据保存,数据加密功能

1、cookie

1、会话技术

2、客户端的会话技术(数据保存在浏览器上

3、问题

导致原因:在web应用中,一次网络请求是从request开始,到response结束,跟以后的请求或者跟其他请求没有关系
(导致每次请求之间的数据没有关系(短连接、长链接))
解决:在客户端保留数据(cookie)或者服务端保留数据(session)来建立关系

4、cookie的使用

1、存
	格式:response.set_cookie(key,value)
	例:	response.set_cookie('username',username)
    	  response.set_cookie('password',password)
	通过response通过浏览器要保存key,value形式的cookie

2、取
	如过浏览器保留了cookie,那么每次请求该服务器的时候,会自动的携带该cookie
	格式:request.COOKIES.get(key)
	例: username = request.COOKIES.get('username')
    	 password = request.COOKIES.get('password')

3、设置过期时间
	默认情况下,关闭浏览器cookie就会过期,有时候我们需要设置过期时间
	格式:response.set_cookie(key,value,expirse = 值)
	expires = 0		立马过期
    expires = None	永不过期
    expires = 值		单位是秒
    expires = timedelta(days = 值) 表示多少天后过期   (hours = 值)  表示多少小时候过期
    例:response.set_cookie('password', password, expires=timedelta(seconds=2))
4、删除
	格式:reponse.delete_cookie(key)
	例:response.delete_cookie('password')

5、cookie的应用场景

1、保存帐号,密码
2、京东的购物车(不登录也可以添加到购物车)
3、保留用户的浏览信息...

2、session

1、 会话技术

2、服务端的会话技术

3、需要客户端的支持才可以

4、使用

1、存
	格式:request.session[key] = value
	例:request.session['username']= username
    	request.session['password']=password
	注意:在django中存储了一个session后,django会自动的生成session key,并将session key与数据自动的存储到django_session表中,数据会自动的用base64编码,并会自动让浏览器的cookie存储sessionid(就是session key)
	
2、取
	格式:value = request.session.get(key)
	例:username = request.session.get('username')
    	password = request.session.get('password')
    注意:在django中,会自动将cookie中的sessionid拿出来跟数据库中的session key匹配,匹配成功后即可以获取值
    
3、清除
	1、清除对应的cookie
	2、del request.session
	推荐的3、request.session.flush()   会清除对应的cookie及session

3、MD5—信息摘要—加密

md5可以将任何一个二进制的数据通过数学算法,转换成一个一定长度(128位)的二进制数据
特点:1、结果是唯一的,不可能重复
	 2、不可逆
作用:1、通常用来加密密码
	 2、通常用来验证一个数据的完整性
使用md5处理
	创建一个md5对象
	MD5 = hashlib.md5()
	将一个二进制数据进行md5处理,生成一个128位的二进制数据
	4位的二进制是一位的十六进制
	MD5.update(password.encode('utf-8'))
	将二进制结果转换成32位十六进制的结果
	password = MD5.hexdigest()

4、生成一个唯一性的字符串

1、自己生成:

唯一的字符串规则:时间戳 + 随机数(很多位) + 公司的域名
mytoken = str(time.time()) + str(random.randint(100000,999999)) + 'www.baidu.com'

2、使用uuid模块

生成一个唯一的uuid
myuuid = uuid.uuid4()

5、编码/解码

编码:将一个数据按照码表转换成二进制的形式  encode
解码:将二进制的数据转换成可视形式的数据  decode
解码的时候码表必须与编码的码表一致
utf-8、gbk、base64

6、加密/解密

1、DES 对称加密

加密的密钥与解密的密钥是同一个密钥

2、RSA 非对称加密

加密的密钥(公钥)与解密的密钥(私钥)不是同一个密钥

3、md5/sha 信息摘要

可以将任何一个二进制的数据通过数学算法,转换成一个一定长度的二进制数据,而该数据不可逆且唯一

猜你喜欢

转载自blog.csdn.net/EverXerxes/article/details/82747737