#!/usr/bin/env python
# -*- coding:utf-8 -*-
__author__ = "loki" # Usage: hashlib模块 import hashlib
import time # wrapper function calc length and use time
def len_type_tools(res):
def wrapper(*args, **kwargs):
cur_time = time.time()
len_res = len(res(*args, **kwargs))
result = res(*args, **kwargs)
end_time = time.time() - cur_time
print('Primary HASH result length is {0}, use time {1:.2f}'.format(len_res, end_time))
return result
return wrapper def menu_list():
func_list = {}
for item in hashlib.__dict__:
if str(item).startswith("sha") or str(item).startswith("md5"):
func_list[item] = hashlib.__dict__[item]
return func_list @len_type_tools
def algol(data, num):
if num != 1:
user_choose = menu_list()[data[1]]()
user_choose.update(data[0].encode("utf-8"))
return user_choose.hexdigest()
user_choose = menu_list()["md5"]()
user_choose.update(data[0].encode("utf-8"))
return user_choose.hexdigest() def file_read(path):
with open(r"{}".format(path), 'rb') as file_info:
file_bin = file_info.read()
return file_bin def main():
"""
.::hashlib small tools::.
by: loki 2018-06-25
format:
>> <file_path> [algol]
algol:
md5(default)
sha1
sha224
sha256
sha384
sha512
example:
>> c:\\test.txt sha1
:return hash_value
"""
print(main.__doc__)
file_path = input('>>').strip()
file_path = file_path.split()
argument_num = len(file_path)
print(algol(file_path, argument_num)) if __name__ == '__main__':
main()
time.sleep(15)

小结:

再这个hashlib模块学习中,顺便回顾了下装饰器。也运用了下魔术方法__dict__功能

python模块——hashlib模块(简单文件摘要算法实现)的更多相关文章

  1. 通过python的hashlib模块计算一个文件的MD5值

    Python的hashlib提供了很多摘要算法,如MD5,SHA1等常用算法. 什么是摘要算法呢?摘要算法又称哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(如MD5值 ...

  2. 《Python》hashlib模块、configparser模块、logging模块

    一.hashlib模块 Python的hashlib模块中提供了常见的摘要算法,如md5,sha1等等. 摘要算法又称哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长度固定的字符串(通 ...

  3. Python进阶(九)----json模块, pickle模块, os模块,sys模块,hashlib模块

    Python进阶----json模块, pickle模块, os模块,sys模块,hashlib模块 一丶序列化模块 什么是序列化: ​ 将一种数据结构,转换成一个特殊的序列(特殊字符串,用于网络传输 ...

  4. Python第十一天 异常处理 glob模块和shlex模块 打开外部程序和subprocess模块 subprocess类 Pipe管道 operator模块 sorted函数 os模块 hashlib模块 platform模块 csv模块

    Python第十一天    异常处理  glob模块和shlex模块    打开外部程序和subprocess模块  subprocess类  Pipe管道  operator模块   sorted函 ...

  5. python中hashlib模块用法示例

    python中hashlib模块用法示例 我们以前介绍过一篇Python加密的文章:Python 加密的实例详解.今天我们看看python中hashlib模块用法示例,具体如下. hashlib ha ...

  6. python模块: hashlib模块, configparse模块, logging模块,collections模块

    一. hashlib模块 Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等. 摘要算法又称哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用 ...

  7. python笔记7 logging模块 hashlib模块 异常处理 datetime模块 shutil模块 xml模块(了解)

    logging模块 日志就是记录一些信息,方便查询或者辅助开发 记录文件,显示屏幕 低配日志, 只能写入文件或者屏幕输出 屏幕输出 import logging logging.debug('调试模式 ...

  8. python基础--hashlib模块

    hashlib模块用于加密操作,代替了md5和sha模块, 主要提供SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法. # -*- coding:utf-8 - ...

  9. python day 8: re模块补充,导入模块,hashlib模块,字符串格式化,模块知识拾遗,requests模块初识

    目录 python day 8 1. re模块补充 2. import模块导入 3. os模块 4. hashlib模块 5. 字符串格式:百分号法与format方法 6. 模块知识拾遗 7. req ...

随机推荐

  1. EditPlus 4.3.2502 中文版已经发布(12月5日更新)

    新的版本修复了在之前某版本中键盘 End 键定位位置错误的问题.

  2. python的subprocess的简单使用和注意事项

    subprocess是python在2.4引入的模块, 主要用来替代下面几个模块和方法: os.systemos.spawn*os.popen*popen2.*commands.* 可以参考PEP32 ...

  3. iOS可执行文件__TEXT段限制 以及 Android 65K函数限制

    1.先看下苹果关于 .ipa上传的大小规定: 最大构建版本文件大小 解压 XXX.ipa size Payload/xxx.app/xxx  32位  32位 + 64位 有些2dx.u3d游戏 或是 ...

  4. nginx使用https功能

    nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/n ...

  5. 解读 Q_D, Q_Q 指针

    见 qglog.h文件定义: #define Q_D(Class) Class##Private * const d = d_func()    #define Q_Q(Class) Class * ...

  6. python如何序列化json数据

    使用json模块提供的loads方法和dumps方法,可以很方便的载入和读取json数据格式.而在具体实际应用中,我们使用python数据格式是 string.list 或dict等,这类格式如何直接 ...

  7. c++第十四天

    <c++ primer, 5E> 第91页到第94页,笔记: 1.vector支持的操作. v.empty().v.size().v.push_back(t).v[n] 2.试图通过下标访 ...

  8. Android 拖动条 和 Handle

  9. 利用构建缓存机制缩短Docker镜像构建时间

    在使用Docker部署PHP或者node.js应用时,常用的方法是将代码和环境镜像打包成一个镜像然后运行,一些云厂商提供了非常便捷的操作,只需要把我们的代码提交到VCS上,然后它们就会帮我们拉取代码并 ...

  10. bzoj 1179 [APIO 2009]Atm(APIO水题) - Tarjan - spfa

    Input 第一行包含两个整数N.M.N表示路口的个数,M表示道路条数.接下来M行,每行两个整数,这两个整数都在1到N之间,第i+1行的两个整数表示第i条道路的起点和终点的路口编号.接下来N行,每行一 ...