zoukankan      html  css  js  c++  java
  • hashlib模块

    import hashlib
    # 能够把一个字符串数据类型的变量,转换成定长的密文的字符串,每一个字符都是十六进制数
    
    # md5 结果为32位字符串,每个字符都是十六进制
    # 注意:如果要对多个字符串计算md5,一定要实例化多个MD5对象 md5_obj = hashlib.md5(bytes('任意字符串作为盐',encoding='utf-8'))
    s = 'alex3714'
    md5_obj = hashlib.md5(bytes('任意字符串作为盐',encoding='utf-8'))
    
    md5_obj.update(bytes(s,encoding='utf-8'))
    m = md5_obj.hexdigest()
    print(m)
    
    # sha1 结果为40位字符串,每个字符都是十六进制.用法跟md5一样 只需要把md5改成sha1
    s = 'alex3714'
    sha1_obj =hashlib.sha1(bytes('任意字符串作为盐',encoding='utf-8'))
    sha1_obj.update(bytes(s,encoding='utf-8'))
    s = sha1_obj.hexdigest()
    print(s)
    # 大文件md5 注意:同一个文件的时候一定要用同一个md5的实例化对象 25cd4f5e603e0da5ff5b12e445503052
    def md5_file(file_name,each_size=1024):
        import os
        md5_obj = hashlib.md5()
        file_size = os.path.getsize(file_name)
        with open(file_name,'rb') as f:
            count = 0
            while count < file_size:
                if count + each_size < file_size:
                    line = f.read(each_size)
                    count += each_size
                else:
                    line = f.read(file_size-count)
                    count = file_size
                md5_obj.update(line)
        m = md5_obj.hexdigest()
        return m
    def md5_file_compare(file1,file2,each_size=1024):
        file1_md5 = md5_file(file1,each_size)
        file2_md5 = md5_file(file2,each_size)
        return file1_md5,file2_md5,file1_md5==file2_md5
    file1 = '测试用的文件.mp4'
    file2 = 'os模块.ipynb'
    print(md5_file_compare(file1,file2,each_size=1024))
    验证文件是否相同
  • 相关阅读:
    Dev 控件笔记1 repositoryItemLookUpEdit 控件
    装饰账务管理
    Tiptop ERP 采购运费一键分摊
    笔记:两数互相交换,不使用第三方变量
    .net core3.0 webapi搭建(一)
    【笔记】冒泡排序
    Mysql 几种常见的插入 Insert into,Replace Into,Insert ignore
    【转】IEnumerable接口的一个简单示例
    [转]从实例谈OOP、工厂模式和重构
    浅谈C#委托的用法-delegate[转]
  • 原文地址:https://www.cnblogs.com/wtil/p/11093656.html
Copyright © 2011-2022 走看看