zoukankan      html  css  js  c++  java
  • python模块——hashlib模块(简单文件摘要算法实现)

    #!/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__功能

  • 相关阅读:
    正则验证图片格式
    最近wifi连接局域网出现问题
    Linux vi 按键键盘映射表
    粗心少括号
    一个drop table用的时间
    asp 使用word模板生成word文件
    因为没有打开的文档,所以这一命令无效==操作word问题
    工程师进阶之路(二)
    word 中设置末一段落的行间距
    SQL自定义函数求当天最小时间和最大时间
  • 原文地址:https://www.cnblogs.com/Cong0ks/p/9223615.html
Copyright © 2011-2022 走看看