python常见模块的使用string,hashlib,pycipher
2018-02-11 21:44
477 查看
前言
经常写点东西,总结一下也挺好!-.-一、hashlib模块处理hash时常用
首推还是看官网的文档https://docs.python.org/3/library/hashlib.html
其实看了官方的说明,我顿时就不知道该写什么了。
例子拿去:
>>> import hashlib >>> m = hashlib.sha256() >>> m.update(b"Nobody inspects") >>> m.update(b" the spammish repetition") >>> m.digest() b'\x03\x1e\xdd}Ae\x15\x93\xc5\xfe\\\x00o\xa5u+7\xfd\xdf\xf7\xbcN\x84:\xa6\xaf\x0c\x95\x0fK\x94\x06' >>> m.digest_size 32 >>> m.block_size 64
Note: Feeding string objects into update() is not supported, as hashes work on bytes, not on characters. 意思就是update的参数默认会先转化为byte
m.update(b"Nobody inspects") 和 m.update("Nobody inspects") 本质上是一样的,会自动的将“”转化为bytes
但是通常更常用的写法是这样的:
h=hashlib.new("sha256") #'md5', 'sha1', 'sha224', 'sha256', 'sha384', 'sha512'.... h.update("Hello") print h.hexdigest()
另外顺带说一下MD5 16位 和32位的关系。
md5 16位其实就是32位的中间部分,自己可以去验证一下。
h=hashlib.new("md5") h.update("123") print h.hexdigest()#202cb962ac59075b964b07152d234b70 print h.hexdigest()[8:-8] #ac59075b964b0715
另外还有一个就是
hashlib.pbkdf2_hmac(hash_name, password, salt, iterations, dklen=None)
就是带key的hash,通常来说hash是不会带key,具体是什么意思我也不懂。没学过!!! 不过这需要python3以上才行。
New in version 3.4 在python3.4中又改了,使用hmac Note A fast implementation of pbkdf2_hmac is available with OpenSSL. The Python implementation uses an inline version of hmac. It is about three times slower and doesn’t release the GIL.
二、string模块
string模块我觉得主要是可以用来表示常见的字符集合。可以搜索string.py看一下里面的集合定义,如下。
whitespace = ' \t\n\r\v\f' lowercase = 'abcdefghijklmnopqrstuvwxyz' uppercase = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' letters = lowercase + uppercase ascii_lowercase = lowercase ascii_uppercase = uppercase ascii_letters = ascii_lowercase + ascii_uppercase digits = '0123456789' hexdigits = digits + 'abcdef' + 'ABCDEF' octdigits = '01234567' punctuation = """!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~""" printable = digits + letters + punctuation + whitespace
好了,这个就不多说了,常常用作爆破的集合
note:其实我们完全可以在自己电脑上搜索相应模块如hashlib.py
三、pycipher模块
从这个模块的介绍中Several simple cipher algorithms
这个模块主要是一些简单的加密算法
我这里就提两种。Affine和Playfair
用法:具体的算法我就不多介绍了。
from pycipher import Affine print Affine(5,11).encipher("Hello")#UFFOOD print Affine(5,11).decipher("UFFOOD") #HEELLO
from pycipher import Playfair print Playfair("CULTREABDFGHIKMNOPQSVWXYZ").encipher("Helo") #GAUP print Playfair("CULTREABDFGHIKMNOPQSVWXYZ").decipher("GAUP")#Helo
总结
python是一门很简洁的语言,多学习对自己处理一些事情的帮助还是挺大的。最后贴上一个批量重命名的脚本,,
#-*-coding:utf-8-*- import os,sys path="." old_names=os.listdir(path) i=1 for dir in old_names: new_name=str(i)+".jpg" os.rename(dir,new_name) i=i+1
相关文章推荐
- Python使用hashlib模块做字符串加密
- python logging 模块常见使用需求总结
- Python 字符串操作及string模块使用
- python3 使用urllib.request模块,关于bytes和string的那些事
- Python之队列queue模块使用 常见问题与用法
- Python之队列queue模块使用 常见问题与用法
- python中的hashlib和base64加密模块使用实例
- Python中time,datetime模块的常见使用方法
- 使用python中的numpy模块遇到could not convert string to float
- Python模块安装: pip常见的使用方法
- Python time、datetime、os、random、sys、hashlib、json、shutil、logging、paramiko、subprocess、ConfigParser、xml、shelve模块的使用
- python之模块hashlib(提供了常见的摘要算法,如MD5,SHA1等等)
- 使用 Boost.Python 嵌入 Python 模块到 C++
- PYTHON正则表达式 re模块使用说明
- 使用Python的timeit模块
- PYTHON正则表达式 re模块使用说明
- python 模块使用
- Python模块学习——hashlib
- 使用Python(comtypes)操作ArcGis(ArcObject)的第一步:安装模块到gen文件夹中