您的位置:首页 > 编程语言 > Python开发

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