shelve和hashlib模块
一、shelve模块
shelve模块是一个简单的k,v将内存数据通过文件持久化的模块,可以持久化任何pickle可支持的python数据格式。
注意:
shelve模块封装了pickle模块,,允许多次dump和load,但只能在python中使用,比pickle要强大许多。
#!/usr/bin/env python3
#-*- coding:utf-8 -*-
import shelve f = shelve.open('shelve_test') # 打开文件
names = ['yr','hj','qw','xwf']
info = {'name':['yr','dds'],'age':[20,21]} f['names'] = names # 持久化列表
f['info_dict'] = info
f.close() f = shelve.open('shelve_test')
print(list(f.keys())) # ['names', 'info_dict']
print(f['names'][1],f['info_dict']['age'][1]) # hj 21 del f['names'] # 仅能删除第一层的’k‘值
print(list(f.items())) # [('info_dict', {'name': ['yr', 'dds'], 'age': [20, 21]})] f['job'] = ['stu1','stu2'] # 创建
print(list(f.items())) # [('info_dict', {'name': ['yr', 'dds'], 'age': [20, 21]}), ('job', ['stu1', 'stu2'])] f['job'] = ['s1','s2'] # 修改第一层
print(list(f.items())) # [('info_dict', {'name': ['yr', 'dds'], 'age': [20, 21]}), ('job', ['s1', 's2'])]
二、hashlib模块
1、Hash:
简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。HASH主要用于信息安全领域中加密算法,
他把一些不同长度的信息转化成杂乱的128位的编码里,叫做HASH值.也可以说,hash就是找到一种数据内容和数据存放地址之间的映射关系. 2、MD5:
MD5讯息摘要演算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码杂凑函数,
可以产生出一个128位的散列值(hash value),用于确保信息传输完整一致. 3、MD5功能
输入任意长度的信息,经过处理,输出为128位的信息(数字指纹);
不同的输入得到的不同的结果(唯一性) 4、MD5算法的特点
压缩性:任意长度的数据,算出的MD5值的长度都是固定的 容易计算:从原数据计算出MD5值很容易
抗修改性:对原数据进行任何改动,修改一个字节生成的MD5值区别也会很大 强抗碰撞:已知原数据和MD5,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。 5、MD5用途
<1>、防止被篡改 <2>、防止直接看到明文
<3>、防止抵赖(数字签名)
6、用法:
import hashlib
# 用于加密相关的操作,3.x里代替了md5模块和sha模块,
# 主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法
m = hashlib.md5()
m.update(b'Hello')
m.update(b'It is me')
print(m.digest()) # 2进制格式hash
print(len(m.hexdigest())) #16进制格式hash # MD5
hash = hashlib.md5()
hash.update(b'admin') # 必须转为bytes类型
print(hash.hexdigest()) # 21232f297a57a5a743894a0e4a801fc3 # SHA1
hash = hashlib.sha1()
hash.update(b'admin')
print(hash.hexdigest()) # d033e22ae348aeb5660fc2140aec35850c4da997 # SHA256
hash = hashlib.sha256()
hash.update(b'admin')
print(hash.hexdigest()) # 8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918 # SHA384
hash = hashlib.sha384()
hash.update(b'admin')
print(hash.hexdigest()) # 9ca694a90285c034432c9550421b7b9dbd5c0f4b6673f05f6dbce58052ba20e4248041956ee8c9a2ec9f10290cdc0782 # SHA512
hash = hashlib.sha512()
hash.update(b'admin')
print(hash.hexdigest()) # c7ad44cbad762a5da0a452f9e854fdc1e0e7a52a38015f23f3eab1d80b931dd472634dfac71cd34ebc35d16ab7fb8a90c81f975113d6c7538dc69dd8de9077ec
shelve和hashlib模块的更多相关文章
- python 全栈开发,Day25(复习,序列化模块json,pickle,shelve,hashlib模块)
一.复习 反射 必须会 必须能看懂 必须知道在哪儿用 hasattr getattr setattr delattr内置方法 必须能看懂 能用尽量用__len__ len(obj)的结果依赖于obj. ...
- python笔记-7(shutil/json/pickle/shelve/xml/configparser/hashlib模块)
一.shutil模块--高级的文件.文件夹.压缩包处理模块 1.通过句柄复制内容 shutil.copyfileobj(f1,f2)对文件的复制(通过句柄fdst/fsrc复制文件内容) 源码: Le ...
- python 闭包,装饰器,random,os,sys,shutil,shelve,ConfigParser,hashlib模块
闭包 def make_arerage(): l1 = [] def average(price): l1.append(price) total = sum(l1) return total/len ...
- 4-20模块 序列化模块 hashlib模块
1,模块,py文件就是模块,py之所以好用就是模块多. 2,模块的分类: 1,内置模块,python 安装时自带的模块 2,扩展模块,别人写好的,需要安装之后,可以直接使用.itchat微信模块, b ...
- python 无序模块,hashlib模块
无序模块什么是无序模块,将字符串转化为十六进制的字符串类型,主要运用在网络编程中.1,json模块 1,用于网络传输,跨语言,可用的类型有 int str 列表-->元祖会变为列表 字典--&g ...
- Python进阶(九)----json模块, pickle模块, os模块,sys模块,hashlib模块
Python进阶----json模块, pickle模块, os模块,sys模块,hashlib模块 一丶序列化模块 什么是序列化: 将一种数据结构,转换成一个特殊的序列(特殊字符串,用于网络传输 ...
- python标准模块(time、datetime及hashlib模块)
一.time,datetime模块 时间相关的操作 import time time.sleep(5) # ==> 停顿多少秒 print(time.time()) # ==> 返回时间戳 ...
- Python hashlib模块 (主要记录md5加密)
python提供了一个进行hash加密的模块:hashlib 下面主要记录下其中的md5加密方式(sha1加密一样把MD5换成sha1) >>> import hashlib > ...
- Python学习笔记——基础篇【第六周】——json & pickle & shelve & xml处理模块
json & pickle 模块(序列化) json和pickle都是序列化内存数据到文件 json和pickle的区别是: json是所有语言通用的,但是只能序列化最基本的数据类型(字符串. ...
随机推荐
- 【python】ConfigParser写入和读取配置文件
参照博客 http://www.cnblogs.com/TankXiao/p/3038350.html 配置文件格式: [section1] name = tank age = 28 [section ...
- Android应用接入第三方登陆之新浪微博
众所周知,移动互联网在这几年经历了蓬勃发展,到目前为止,移动互联网发展仍然很强劲.其中移动设备系统以android占据主导地位,之前是加拿大的黑莓系统占据主导,但后来随着android系统的问世,黑莓 ...
- MpVue解析
前言 mpvue是一款使用Vue.js开发微信小程序的前端框架.使用此框架,开发者将得到完整的 Vue.js 开发体验,同时为H5和小程序提供了代码复用的能力.如果想将 H5 项目改造为小程序,或开发 ...
- rebar自定义template
在开发过程中rebar自带模板建立项目,或多或少不能满足自己的开发需求.本人又是那种懒人,所以就要想办法偷懒.查看了priv模板 打造适合自己的项目模板.下面我简单的介绍整个模板的打造过程. 准备过程 ...
- 我所常用的git命令
说明公司向用git来管理项目的代码,我以前只是在eclipse中使用菜单来操作git,现在,学习一下命令,这样也不用安装各种git客户端软件了.git安装在官网上下载git,安装完成之后,在命令行中输 ...
- HihoCoder 1044 01-string 贪心
1144 : 01串 时间限制:7000ms 单点时限:1000ms 内存限制:256MB 描述 给定两个整数n和m,求是否存在恰好包含n个0和m个1的01串S,使得S中不存在子串"001& ...
- win10环境变量的配置
c盘->环境变量: 1.添加变量名和变量值 变量名:JAVA_HOME 变量值:C:\Program Files\Java\jdk1.8.0_161 2.添加变量名和变量值 变量名:JAVA_H ...
- 12C 对表分区维护的增强
Oracle Database 12c对表分区变化比较多,共分为下面几点 1.在线移动分区:通过MOVE ONLINE关键字实现在线分区移动.移动过程中,对表和被移动的分区可以执行查询操作, DML语 ...
- [转]Mac上的抓包工具Charles
$*********************************************************************************************$ 博主推荐 ...
- Java 成员方法的定义
方法的定义: 方法是类或对象的行为特征的抽象. Java中的方法不能独立存在,所有的方法必须定义在类中. 使用 “类名.方法” 或 “对象.方法” 的形式调用. 语法格式: 权限修饰符 返回值类型 方 ...