shelve和hashlib模塊
阿新 • • 發佈:2018-02-10
hello names hex 轉化 映射 close lis mce 領域
一、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模塊