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

  


 

    

原文地址:https://www.cnblogs.com/schut/p/8437052.html

时间: 2024-10-05 20:43:00

shelve和hashlib模块的相关文章

configparser ,shelve ,hashlib,random模块

configparser模块一句话概念:可以通过configparser将配置信息字典化的读写 import configparser #生成一个这样的文档 config = configparser.ConfigParser() #生成一个对象 config["DEFAULT"] = {'ServerAliveInterval': '45', 'Compression': 'yes', 'CompressionLevel': '9'} config['bitbucket.org']

Python进阶(九)----os,sys,hashlib模块

Python进阶(九)----os,sys,hashlib模块 一丶序列化模块 什么是序列化: ? 将一种数据结构,转换成一个特殊的序列(特殊字符串,用于网络传输,或文件保存) ? 真正的意义:变量从内存中变成可存储或传输的过程称之为序列化 json模块: ? 是所有语言公认的一种序列,最常用,支持的数据结构有限:"list(tuple), int .str ,bool,None,float." ### dumps ,loads : 主要网络传输 , 用于文件的读取. import j

day5模块学习--hashlib模块

hashlib模块     Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等. 什么是摘要算法呢?摘要算法又称哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示). 举个例子,你写了一篇文章,内容是一个字符串'how to use python hashlib - by Michael',并附上这篇文章的摘要是'2d73d4f15c0db7f5ecb321b6a65e5d6d'.如果有人篡改了你的文章,并发表为'ho

python的hashlib模块

hashlib模块是用来对字符串进行hash加密的模块,得到的hash密文不会改变,稳定:用于注册.登录时用户名.密码等加密使用.一.函数分析:1.共有5种加密算法:md5(),sha1(),sha224(),sha256(),sha384(),sha512(),分别得到不同的加密密文.2.hashlib.hexdigest():获取加密的密文,16进制,无参数.3.hashlib.digest():获取加密的密文,二进制,无参数.4.hashlib.copy():复制一份当前创建的hash对象

day6 hashlib模块

    hashlib模块 用于加密相关的文件操作,3.X离代替了md5模块和sha模块,主要提供SHA1,SHA224,SHA256,SHA384,SHA512,MD5算法 __always_supported = ('md5', 'sha1', 'sha224', 'sha256', 'sha384', 'sha512') import hashlib m = hashlib.md5() m.update(b"Hello") m.update(b"It's me"

day6 反射,hashlib模块,正则匹配,冒泡,选择,插入排序

一.反射(自省) 首先通过一个例子来看一下本文中可能用到的对象和相关概念. import sys # 模块,sys指向这个模块对象import inspectdef foo(): pass # 函数,foo指向这个函数对象 class Cat(object): # 类,Cat指向这个类对象 def __init__(self, name='kitty'): self.name = name def sayHi(self): # 实例方法,sayHi指向这个方法对象,使用类或实例.sayHi访问

md5模块(Python内置模块)和hashlib模块

转自https://my.oschina.net/duhaizhang/blog/67214 MD5模块用于产生消息摘要,康用来判断文件是否相同. python的md5模块使用非常简单,包括以下几个函数: md5.new([arg]) 返回一个md5对象,如果给出参数,则相当于调用了update(arg) md5.md5(s) 返回字符串s的md5 md5.updte(arg) 用string参数arg更新md5对象.即将要计算arg的消息摘要值. md5.digest() 返回16字节的摘要,

python标准模块(time、datetime及hashlib模块)

一.time,datetime模块 时间相关的操作 1 import time 2 time.sleep(5) # ==> 停顿多少秒 3 print(time.time()) # ==> 返回时间戳,1970年1月1日之后的秒,seconds 4 print(time.ctime()) # ==> 返回字符串形式当前时区的当前时间 5 print(time.ctime(time.time()-86400)) # ==>时间换算,当前系统时间提前一天 6 print(time.gm

Python学习笔记——基础篇【第六周】——hashlib模块

常用模块之hashlib模块 用于加密相关的操作,3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法 import md5 hash = md5.new() hash.update('admin') print hash.hexdigest() MD5-废弃 import sha hash = sha.new() hash.update('admin') print hash.hexdigest() sha-废