精华内容
下载资源
问答
  • buffer = 8192 来自网络,但不...from hashlib import md5import timeimport osdef calMD5(str):m = md5()m.update(str)return m.hexdigest()def calMD5ForFile(file):statinfo = os.stat(file)if int(statinfo.st_...

    buffer = 8192 来自网络,但不知道是怎么实践出来的。

    from hashlib import md5

    import time

    import os

    def calMD5(str):

    m = md5()

    m.update(str)

    return m.hexdigest()

    def calMD5ForFile(file):

    statinfo = os.stat(file)

    if int(statinfo.st_size)/(1024*1024) >= 1000 :

    print "File size > 1000, move to big file..."

    return calMD5ForBigFile(file)

    m = md5()

    f = open(file, 'rb')

    m.update(f.read())

    f.close()

    return m.hexdigest()

    def calMD5ForFolder(dir,MD5File):

    outfile = open(MD5File,'w')

    for root, subdirs, files in os.walk(dir):

    for file in files:

    filefullpath = os.path.join(root, file)

    """print filefullpath"""

    filerelpath = os.path.relpath(filefullpath, dir)

    md5 = calMD5ForFile(filefullpath)

    outfile.write(filerelpath+' '+md5+"\n")

    outfile.close()

    def calMD5ForBigFile(file):

    m = md5()

    f = open(file, 'rb')

    buffer = 8192 # why is 8192 | 8192 is fast than 2048

    while 1:

    chunk = f.read(buffer)

    if not chunk : break

    m.update(chunk)

    f.close()

    return m.hexdigest()

    if __name__ == "__main__":

    #print calMD5("Hello World!")

    t = time.time()

    print calMD5ForFile("E:\\OS\\ubuntu-11.04-desktop-i386.iso")

    print time.time() - t

    t = time.time()

    print calMD5ForBigFile("E:\\OS\\ubuntu-11.04-desktop-i386.iso")

    print time.time() - t,"\n"

    t = time.time()

    print calMD5ForFile("E:\\OS\\ubuntu-12.04-desktop-amd64.iso")

    print time.time() - t

    t = time.time()

    print calMD5ForBigFile("E:\\OS\\ubuntu-12.04-desktop-amd64.iso")

    print time.time() - t,"\n"

    t = time.time()

    print calMD5ForFile("D:\\Virtual Machines\\Ubuntu 64-bit\\Ubuntu 64-bit-s001.vmdk")

    print time.time() - t

    t = time.time()

    print calMD5ForBigFile("D:\\Virtual Machines\\Ubuntu 64-bit\\Ubuntu 64-bit-s001.vmdk")

    print time.time() - t,"\n"

    #output

    #8b1085bed498b82ef1485ef19074c281

    #2.57500004768

    #8b1085bed498b82ef1485ef19074c281

    #3.34100008011

    #

    #128f0c16f4734c420b0185a492d92e52

    #2.632999897

    #128f0c16f4734c420b0185a492d92e52

    #3.39100003242

    #

    #File size > 1000, move to big file...

    #ec1fa4dc1b32569e9da7b4744548a9ef

    #5.40100002289

    #ec1fa4dc1b32569e9da7b4744548a9ef

    #5.42100000381

    PS: 纪念下我直接计算3G+文件时的内存使用率

    展开全文
  • 文件MD5值计算

    2013-08-16 09:44:18
    在文件完整性中比较中,在网络上我们经常会看到一些文件的MD5值用来比较下载的文件是否完整一致。这些算法是怎么去实现的呢?下面就是实现的代码片段 /// /// 文件MD5值 /// public static class FileMD5...

    在文件完整性中比较中,在网络上我们经常会看到一些文件的MD5值用来比较下载的文件是否完整一致。这些算法是怎么去实现的呢?下面就是实现的代码片段


        /// <summary>
        /// 文件MD5值
        /// </summary>
        public static class FileMD5
        {
            #region --- MD5效驗碼方法 Begin ---
    
            /// <summary>
            /// 获取MD5校验码
            /// </summary>
            /// <param name="fileName">文件完整路径</param>
            /// <returns>文件MD5值</returns>
            public static string GetFileMD5(string fileName)
            {
                string md5str = "";
                MD5 md5 = new MD5CryptoServiceProvider();
                using (FileStream fst = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read, 8192))
                {
                    md5.ComputeHash(fst);
                    byte[] hash = md5.Hash;
                    StringBuilder sb = new StringBuilder();
                    foreach (byte byt in hash)
                    {
                        sb.Append(String.Format("{0:X1}", byt));
                    }
                    md5str = sb.ToString();
    
                }
                return md5str;
            }
    
    
            /// <summary>
            /// 文件MD5验证
            /// </summary>
            /// <param name="md5str">MD5值</param>
            /// <param name="fileName">文件完整路径</param>
            /// <returns>验证结果 True = 成功 False 失败</returns>
            public static bool FileMD5Calibration(string md5str, string fileName)
            {
                bool fc = false;
                MD5 md5 = new MD5CryptoServiceProvider();
                using (FileStream fst = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read, 8192))
                {
                    md5.ComputeHash(fst);
                    byte[] hash = md5.Hash;
                    StringBuilder sb = new StringBuilder();
                    foreach (byte byt in hash)
                    {
                        sb.Append(String.Format("{0:X1}", byt));
                    }
                    fc = md5str.Equals(sb.ToString());
                }
                return fc;
            }
    
            #endregion --- MD5效驗碼方法 End ---
        }




    展开全文
  • 快速计算文件的MD5/SHA1/SHA256等校验(Windows/Linux)

    万次阅读 多人点赞 2018-05-13 12:34:36
    从网络上下载文件,尤其是非常大的文件怎么确保文件准确无误呢?...Windows 使用命令行计算校验在命令行下,可以使用Windows自带的certutil命令来计算一个文件的校验:certutil支持的算法有:MD2 MD4 MD5 SHA1 S...

    从网络上下载文件,尤其是非常大的文件怎么确保文件准确无误呢?

    通常网站提供文件时会同时提供该文件的校验值,如MD5,SHA1,SHA256等,

    当文件下载完成后,计算它的校验值,如果和网站提供的一致,就可以放心使用了。

    Windows 使用命令行计算校验值

    在命令行下,可以使用Windows自带的certutil命令来计算一个文件的校验值:


    certutil支持的算法有:MD2 MD4 MD5 SHA1 SHA256 SHA384 SHA512。

    certutil的使用方法非常简单,只需要执行“certutil -hashfile 文件名 校验值类型”,即可计算出对应文件的校验值。例如:计算D:\works\hello.txt这个文件的MD5,可以执行命令:

    certutil -hashfile D:\works\Hello.txt MD5

    执行结果如下,即该文件的MD5值是ac76b02ea9d86459fe9ae0d8e850113a



    Windows 使用工具软件计算校验值

    如果你不太熟悉命令行,这里也有一个非常好用的小工具软件——Hash 1.04。Hash 1.04是一位名叫“Robin Keir”的软件工程师开发的小工具,短小精悍,简单易上手,只需要将待计算文件拖到软件窗口上稍等片刻即可自动计算出MD5等校验值。

    官方下载地址:http://keir.net/hash.html


    Linux 使用命令行计算校验值

    Linux下可以直接使用md5sum/sha1sum/sha256sum等命令直接计算文件的对应校验值。

    md5sum /works/Hello.txt 
    sha1sum /works/Hello.txt 
    sha256sum /works/Hello.txt 

    关于校验值

    校验值是一组16进制数,不区分大小写,校验值本身只与文件内容有关,只要文件内容不改变校验值就不变;如复制/剪切/粘贴,修改文件创建时间/访问时间,修改文件读/写/执行属性等操作都不会导致校验值发生改变。

    当掌握快速计算校验值方法后,以后发送文件时就可以附带上该文件的校验值以防止文件中途损坏或被他人无意间修改。

    扩展阅读

    certutil介绍:https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/certutil

    MD5介绍:https://en.wikipedia.org/wiki/MD5

    SHA介绍:https://en.wikipedia.org/wiki/Secure_Hash_Algorithms

    展开全文
  • Python : 计算文件MD5值

    千次阅读 2012-12-28 16:40:06
    buffer = 8192 来自网络,但不知道是怎么实践出来。 from hashlib import md5 import time import os def calMD5(str): m = md5() m.update(str) return m.hexdigest() def calMD5ForFile(file): ...

    buffer = 8192 来自网络,但不知道是怎么实践出来的。


    from hashlib import md5
    import time
    import os
     
    def calMD5(str):
        m = md5()
        m.update(str)
         
        return m.hexdigest()
     
    def calMD5ForFile(file):
        statinfo = os.stat(file)
         
        if int(statinfo.st_size)/(1024*1024) >= 1000 :
            print "File size > 1000, move to big file..."
            return calMD5ForBigFile(file)
        
         
        m = md5()
        f = open(file, 'rb')
        m.update(f.read())
        f.close()
         
        return m.hexdigest()
     
    def calMD5ForFolder(dir,MD5File):
        outfile = open(MD5File,'w')
        for root, subdirs, files in os.walk(dir):
            for file in files:
                filefullpath = os.path.join(root, file)
                """print filefullpath"""
                 
                filerelpath = os.path.relpath(filefullpath, dir)
                md5 = calMD5ForFile(filefullpath)
                outfile.write(filerelpath+' '+md5+"\n")
        outfile.close()
     
    def calMD5ForBigFile(file):
        m = md5()
        f = open(file, 'rb')
        buffer = 8192    # why is 8192 | 8192 is fast than 2048
         
        while 1:
            chunk = f.read(buffer)
            if not chunk : break
            m.update(chunk)
             
        f.close()
        return m.hexdigest()
         
         
     
     
    if __name__ == "__main__":
        #print calMD5("Hello World!")
         
        t = time.time()
        print calMD5ForFile("E:\\OS\\ubuntu-11.04-desktop-i386.iso")
        print time.time() - t    
        t = time.time()
        print calMD5ForBigFile("E:\\OS\\ubuntu-11.04-desktop-i386.iso")
        print time.time() - t,"\n"
         
        t = time.time()
        print calMD5ForFile("E:\\OS\\ubuntu-12.04-desktop-amd64.iso")
        print time.time() - t   
        t = time.time()
        print calMD5ForBigFile("E:\\OS\\ubuntu-12.04-desktop-amd64.iso")
        print time.time() - t,"\n"
         
        t = time.time()
        print calMD5ForFile("D:\\Virtual Machines\\Ubuntu 64-bit\\Ubuntu 64-bit-s001.vmdk")
        print time.time() - t   
        t = time.time()
        print calMD5ForBigFile("D:\\Virtual Machines\\Ubuntu 64-bit\\Ubuntu 64-bit-s001.vmdk")
        print time.time() - t,"\n"
         
     
         
    #output   
    #8b1085bed498b82ef1485ef19074c281
    #2.57500004768
    #8b1085bed498b82ef1485ef19074c281
    #3.34100008011
    #
    #128f0c16f4734c420b0185a492d92e52
    #2.632999897
    #128f0c16f4734c420b0185a492d92e52
    #3.39100003242
    #
    #File size > 1000, move to big file...
    #ec1fa4dc1b32569e9da7b4744548a9ef
    #5.40100002289
    #ec1fa4dc1b32569e9da7b4744548a9ef
    #5.42100000381 

    展开全文
  • 计算文件 MD5

    千次阅读 2019-09-16 15:19:22
    本篇文章的重点:拿到 File 对象之后,如何计算文件的 md5 ?几千个文件同时计算,页面卡顿崩溃怎么解决?
  • 本文介绍一个C#函数,可以实现计算文件的MD5值,可以用于文件传输后进行有效性校验。 我们知道可以通过将一个字符串进行散列(Hash)运算得到一个32位字符串,将其作为密码来保存是最常见的MD5应用。不知道大家有...
  • 如题,hdfs中的文件怎样计算md5值?需要用到mapreduce么? 如果想用mapreduce话该怎么
  • 最近在研究怎么实现上传文件的去重 目前思路是:先计算文件md5值并保存,上传文件时判断该文件的md5是否已存在,若不存在则跳过上传过程 随后研究了下java获得文件MD5值的流程,如图
  • 最后通过计算一串md5值,进行对比即可。MD5全称是Message-DigestAlgorithm5,在90年代初由MIT计算机科学实验室和RSADataSecurityInc发明,由MD2/MD3/MD4发展而来。MD5实际应用是对一段Message(字节串)...
  • 一点关于MD5计算的封装

    千次阅读 2012-12-23 20:14:52
    MD5 是message-digest algorithm 5 (信息-摘要算法)缩写,广泛用于加密和解密技术,常用于文件...不管文件多大,经过MD5后都能生成唯一的MD5值。好比现在的ISO校验,都是MD5校验。怎么用?当然是把ISO经过MD5后产生
  • MD5

    2020-11-25 14:16:26
    MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保...不管文件多大,经过MD5后都能生成唯一的MD5值。好比现在的ISO校验,都是MD5校验。怎么用?当然是把ISO经过MD5后产生MD5的值。一般下载linux-ISO的朋友
  • MD5加密

    2020-12-11 21:32:55
    MD5加密 MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保...不管文件多大,经过MD5后都能生成唯一的MD5值。好比现在的ISO校验,都是MD5校验。怎么用?当然是把ISO经过MD5后产生MD5的值。一般下载linux-
  • 一劳永逸MD5校验工具

    2010-10-08 11:11:33
    怎么校验本地文件的MD5值与发布者的MD5值一样呢?很简单,看到上图绿色的勾勾了吗?将发布者的MD5值黏贴进后面的框框里,如果MD5值一样,则出现绿色的勾勾,表示MD5值是一样的,如果出现的是红色叉叉,那么MD5值不...
  • 初学者如果想了解openssl编程, 最不喜欢是: 还没有懂怎么利用openssl写代码, 不得不学openssl本身编译。 在本文中, 我直接省略如何编译openssl这个过程, 直接把编译最后结果(库和文件)提供给大家, 希望...
  • 我使用哈希函数来计算各种文件的哈希。这是代码,但我得到的名称错误“选项”没有定义。我想我不会这么做的好吧。随便建议?我在代码中使用了之前的选项,所以有什么问题?在#!/usr/bin/pythonimport sysimport ...
  • 在上一篇文章中讲到分片思路,...服务端通过uploadShard 接口接收file_md5值去redis里面查找当前文件片上传信息: 如果未查到信息,初始化未上传文件片索引值列表。计算方法:total_shard =ceil(total_size / s...
  • vc++ 应用源码包_5

    热门讨论 2012-09-15 14:45:16
    MD5算法 MediaPlayer 视频播放实现。 MFC 对话框 MP3 内部包含:mp3播放器Lrc歌词同步源程序代码分析、mp3播放器+支持歌词同步显示哦、简单音乐播放器。 mfc 解码 视频音频解码部分。 MFC_MultiSender_OVER ...
  • 怎么调接口调着调着就从sha1变成md5了。。。。。如果是算法不确定文档里写清楚啊。然而sdk里逻辑:</li></ol> <pre><code> 计算完分块 ETag ,以及获取到上传成功的文件分块 ETag ,然后...
  • JavaScript MD5:前端 JavaScript MD5 库 ReconnectingWebSocket:前端 WebSocket 重连库 to-markdown:前端 HTML 转换 Markdown UAParser.js:前端 User-Agent 解析库 Sass:前端 CSS 处理工具 jsoup:Java ...
  • C#基类库(苏飞版)

    2014-05-16 23:11:45
    1.获取文件的名字 2.获取文件扩展名 3.获取文件类型 4.视频格式转为Flv 5.生成Flv视频的缩略图 6.转换文件并保存在指定文件夹下 7.转换文件并保存在指定文件夹下 8.运行mencoder的视频解码器转换 复制代码 21.随机数...
  • vc++ 应用源码包_1

    热门讨论 2012-09-15 14:22:12
    MD5算法 MediaPlayer 视频播放实现。 MFC 对话框 MP3 内部包含:mp3播放器Lrc歌词同步源程序代码分析、mp3播放器+支持歌词同步显示哦、简单音乐播放器。 mfc 解码 视频音频解码部分。 MFC_MultiSender_OVER ...
  • vc++ 应用源码包_6

    热门讨论 2012-09-15 14:59:46
    MD5算法 MediaPlayer 视频播放实现。 MFC 对话框 MP3 内部包含:mp3播放器Lrc歌词同步源程序代码分析、mp3播放器+支持歌词同步显示哦、简单音乐播放器。 mfc 解码 视频音频解码部分。 MFC_MultiSender_OVER ...
  • asp.net知识库

    2015-06-18 08:45:45
    常用编码工具类,支持base64,md5,des,crc32 也谈谈技术面试 在C#里把ArrayList转换为Array 或 把Array转换为ArrayList C# 2.0 在.NET 2.0中,让你组件也可以绑定 .NET20 一种简单窗口控件UI状态控制方法 翻译MSDN...
  • vc++ 应用源码包_2

    热门讨论 2012-09-15 14:27:40
    MD5算法 MediaPlayer 视频播放实现。 MFC 对话框 MP3 内部包含:mp3播放器Lrc歌词同步源程序代码分析、mp3播放器+支持歌词同步显示哦、简单音乐播放器。 mfc 解码 视频音频解码部分。 MFC_MultiSender_OVER ...
  • vc++ 应用源码包_4

    热门讨论 2012-09-15 14:38:35
    MD5算法 MediaPlayer 视频播放实现。 MFC 对话框 MP3 内部包含:mp3播放器Lrc歌词同步源程序代码分析、mp3播放器+支持歌词同步显示哦、简单音乐播放器。 mfc 解码 视频音频解码部分。 MFC_MultiSender_OVER ...

空空如也

空空如也

1 2
收藏数 38
精华内容 15
关键字:

怎么计算文件的md5值