精华内容
下载资源
问答
  •  先脚本实现基本的md5验证  1、python如何实现文件下载  方法一:  使用urllib模块提供的 urlretrieve() 函数。urlretrieve() 方法直接将远程数据下载到本地。  urlretrieve(url,[filename=None,...

    第一步

      先用脚本实现基本的md5验证

      1、python如何实现文件的下载

      方法一:

        使用 urllib 模块提供的 urlretrieve() 函数。urlretrieve() 方法直接将远程数据下载到本地。

        urlretrieve(url, [filename=None, [reporthook=None, [data=None]]])

        说明:

          参数 finename 指定了保存本地路径(如果参数未指定,urllib会生成一个临时文件保存数据。

          参数 reporthook 是一个回调函数,当连接上服务器、以及相应的数据块传输完毕时会触发该回调,我们可以利用这个回调函数来显示当前的下载进度。

          参数 data 指 post 到服务器的数据,该方法返回一个包含两个元素的(filename, headers)元组,filename 表示保存到本地的路径,header 表示服务器的响应头。

      实例:

    #!/usr/bin/python
    #encoding:utf-8
    import urllib
    import os
    def Schedule(a,b,c):
        '''''
        a:已经下载的数据块
        b:数据块的大小
        c:远程文件的大小
       '''
        per = 100.0 * a * b / c
        if per > 100 :
            per = 100
        print '%.2f%%' % per
    url = 'http://www.python.org/ftp/python/2.7.5/Python-2.7.5.tar.bz2'
    #local = url.split('/')[-1]
    local = os.path.join('/data/software','Python-2.7.5.tar.bz2')
    urllib.urlretrieve(url,local,Schedule)
    ######output######
    #0.00%
    #0.07%
    #0.13%
    #0.20%
    #....
    #99.94%
    #100.00%

      方法二:

      使用urllib的urlopen()函数

      实例: 

    import urllib2
    print "downloading with urllib2"
    url = 'http://.pythontab.com/test/demo.zip' 
    f = urllib2.urlopen(url) 
    data = f.read() 
    with open("demo2.zip", "wb") as code:     
        code.write(data)

      方法三:

      使用requests模块

      实例:

    import requests 
    print "downloading with requests"
    url = 'http://ww.pythontab.com/test/demo.zip' 
    r = requests.get(url) 
    with open("demo3.zip", "wb") as code:
         code.write(r.content)

     

      2、脚本的基本功能实现

    #python3
    import os
    import sys
    import hashlib
    import requests
    
    
    
    #获取到文件然后md5验证
    def GetFile(ip_or_list,url):
        proxie = {}
        if os.path.isfile(ip_or_list) and not os.path.isfile(url):
            with open(ip_or_list) as f:
                for ip in f:
                    if ip.strip() == '':
                        continue
                    proxie['http'] = 'http://%s:80'%ip.strip()
                    file = requests.get(url, proxies=proxie, timeout=20)
                    md5 = hashlib.md5()
                    md5.update(file.content)
                    print('IP:%s  ===== MD5:%s'%(ip,md5.hexdigest()))
            return 'done'
    
        elif os.path.isfile(ip_or_list) and os.path.isfile(url):
            with open(url) as f:
                for single_url in f:
                    print('验证URL:',single_url)
                    with open(ip_or_list) as t:
                        for ip in t:
                            if ip.strip() == '' or single_url.strip() == '':
                                continue
                            proxie['http'] = 'http://%s:80' % ip.strip()
                            file = requests.get(single_url, proxies=proxie, timeout=20)
                            md5 = hashlib.md5()
                            md5.update(file.content)
                            print('IP:%s  ===== MD5:%s' % (ip, md5.hexdigest()))
    
    
        else:
            proxie = {
                'http': 'http://%s:80'%ip_or_list.strip()
            }
            file = requests.get(url,proxies = proxie,timeout = 20)
            md5 = hashlib.md5()
            md5.update(file.content)
            return 'IP:%s  ===== MD5:%s'%(ip_or_list,md5.hexdigest())
    
    
    #验证大文件的MD5,没有用到
    def GetFileMd5(filename):
        if not os.path.isfile(filename):
            return '传入的MD5验证文件有误'
        md5 = hashlib.md5()
        f = open(filename,'rb')
        while True:
            b = f.read(1024)
            if not b:
                break
            md5.update(b)
        f.close()
        return md5.hexdigest()
    
    
    
    if __name__ == '__main__':
        if len(sys.argv) == 3:
            if os.path.isfile(sys.argv[1]) and os.path.isfile(sys.argv[2]):   #python ip.list + url.list
                print('[ip.list & url.list]开始验证边缘节点')
                res = GetFile(sys.argv[1],sys.argv[2])
                print(res)
    
            else:
                origin_ip, url = sys.argv[1:3]
                print('验证源站md5:')
                res = GetFile(origin_ip,url)
                print(res)
                print('验证边缘节点MD5')
                ip_list = 'ip.list'          #需要遍历的边缘节点列表
                res1 = GetFile(ip_list,url)
                print(res1)
    
        else:
            print('Format:script + origin_IP + URL')
    文件MD5验证

     

    第二步

      页面话操作实现,后面跟进.....

     

    转载于:https://www.cnblogs.com/nopnog/p/7552945.html

    展开全文
  • 为了验证文件修改后的MD5值是否发生变化,笔者一个文本文件进行了测试。如图2所示,第一个文件为进行测试的原始文件,第二个文件为进行修改后的文件(不过只是在打开原始文件的基础上加入了一个空格),第三个文件为...
  • 下载nginx服务器时提供了pgp证书,可以验证完整性。 pgp证书是这样生成的(个人理解):1. 现找到文件的HASH码,类似于md52. 私钥对其进行加密。3. 将公钥暴露到网站上。4. 将证书暴露到网站上。5. 终端用户导入...

    下载nginx服务器时提供了pgp证书,可以验证完整性。

    pgp证书是这样生成的(个人理解):
    1. 现找到文件的HASH码,类似于md5
    2. 用私钥对其进行加密。
    3. 将公钥暴露到网站上。
    4. 将证书暴露到网站上。
    5. 终端用户导入公钥到本地。
    6. 终端用户使用公钥解密证书,拿出hash信息来验证文件的完整性。

    参考列表:
    http://www.jb51.net/LINUXjishu/156064.html
    http://blog.sina.com.cn/s/blog_630bf12f0100nl7i.html


    下面是验证文件nginx-1.6.2.zip的过程:

    wangxin@wangxin-VirtualBox:~/桌面$ ls
    aalexeev.key  is.key     mdounin.key      nginx-1.6.2.zip.asc  sb.key
    glebius.key   maxim.key  nginx-1.6.2.zip  nginx_signing.key
    wangxin@wangxin-VirtualBox:~/桌面$ gpg --import *.key
    gpg: 密钥 F5806B4D:公钥“Andrew Alexeev <andrew@nginx.com>”已导入
    gpg: 密钥 6C7E5E82:公钥“Gleb Smirnoff <glebius@nginx.com>”已导入
    gpg: 密钥 A524C53E:公钥“Igor Sysoev <igor@sysoev.ru>”已导入
    gpg: 密钥 2C172083:公钥“Maxim Konovalov <maxim@FreeBSD.org>”已导入
    gpg: 密钥 A1C052F8:公钥“Maxim Dounin <mdounin@mdounin.ru>”已导入
    gpg: 密钥 7BD9BF62:“nginx signing key <signing-key@nginx.com>”未改变
    gpg: 密钥 7ADB39A8:公钥“Sergey Budnevitch <sb@waeme.net>”已导入
    gpg: 合计被处理的数量:7
    gpg:               已导入:6  (RSA: 3)
    gpg:              未改变:1
    gpg: 没有找到任何绝对信任的密钥
    wangxin@wangxin-VirtualBox:~/桌面$ gpg --verify nginx-1.6.2.zip.asc nginx-1.6.2.zip
    gpg: 于 2014年09月16日 星期二 21时07分26秒 CST 创建的签名,使用 RSA,钥匙号 A1C052F8
    gpg: 完好的签名,来自于“Maxim Dounin <mdounin@mdounin.ru>”
    gpg: 警告:这把密钥未经受信任的签名认证!
    gpg:          没有证据表明这个签名属于它所声称的持有者。
    主钥指纹: B0F4 2533 73F8 F6F5 10D4  2178 520A 9993 A1C0 52F8
    ---------------------
    作者:筋斗云王
    来源:CSDN
    原文:https://blog.csdn.net/xinfuqizao/article/details/41173269
    版权声明:本文为博主原创文章,转载请附上博文链接!

    展开全文
  • 这节我主要讲如何生成文件MD5码。 那么这个MD5是个什么鬼东西,读者可以自行百度,其实简略的讲就是验证文件是否被篡改。 什么意思,比如当你去网站下载游戏的客户端软件,当有些黑客喜欢搞出点不好的事情,...

    今天我们来写写工具类,这个类有什么用呢?

     

    也就是无论你做什么项目,这个工具类你都可以拿来用,之所以通用,是可以适用所有项目。

     

    这节我主要讲如何生成文件的MD5码。

     

    那么这个MD5是个什么鬼东西,读者可以自行百度,其实简略的讲就是验证文件是否被篡改。

     

    什么意思,比如当你去网站下载游戏的客户端软件,当有些黑客喜欢搞出点不好的事情,在你的客户端加些恶意代码之类的。

     

    当黑客改了客户端文件,随之这个文件的MD5也改变了。所以我们只要验证用户下载的客户端的MD5和网站提供的MD5码是否一致,来判断是否要下载。

     

    所以这个MD5是非常有用的,c#也自带MD5库。

     

    public static String BuildFileMd5(String filename)
            {
                String filemd5 = null;
                try
                {
                    using (var fileStream = File.OpenRead(filename))
                    {
                        var md5 = MD5.Create();
                        var fileMD5Bytes = md5.ComputeHash(fileStream);//计算指定Stream 对象的哈希值                                      
                        filemd5 = FormatMD5(fileMD5Bytes);
                    }
                }
                catch (System.Exception ex)
                {
                    LoggerHelper.Except(ex);
                }
                return filemd5;
            }
    
            public static string FormatMD5(Byte[] data)
            {
                return System.BitConverter.ToString(data).Replace("-", "").ToLower();//将byte[]装换成字符串
            }
    

     

     

    将这段代码写到Utils类中,以后如果要用到计算MD5码的,直接Utils.BuildFileMd5(path),就可以取到这个文件的md5。

     

    是不是很简单,ok,之后我会持续更新一些使用的通用工具方法。

    转载于:https://www.cnblogs.com/CaomaoUnity3d/p/4782858.html

    展开全文
  • 一劳永逸MD5校验工具

    2010-10-08 11:11:33
    在一些特殊的情况下,我们会需要校验下载下来的软件的MD5值,尤其是使用P2P软件下载软件所下载的东西,更需要验证一下,以防下载过程中出现了意外,导致整个文件无效。下载MD5校验工具软件,安装之后,再计算出MD5...
  • 在https://www.kernel.org/pub/linux/kernel/v3.x/ 下的内核文件,会成对出现,如: ...类似MD5校验,第一个文件是一个文本文件,第二个文件是内核文件,现在需要linux-3.11.4.tar.xz生成linux-3.11.4.tar,并计算

       https://www.kernel.org/pub/linux/kernel/v3.x/ 下的内核文件,会成对出现,如:

    linux-3.11.4.tar.sign 和linux-3.11.4.tar.xz

    这两个文件怎么用呢?

    类似MD5校验,第一个文件是一个文本文件,第二个文件是内核文件,现在需要用linux-3.11.4.tar.xz生成linux-3.11.4.tar,并计算linux-3.11.4.tar的校验值是否与linux-3.11.4.tar.sign相等。

    第一,下载并解压.xz:

    wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.11.4.tar.sign

    wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.11.4.tar.xz

    xz -d linux-3.11.4.tar.xz

    第二,取得公钥,在https://www.kernel.org/category/signatures.html#kernel-org-web-of-trust 中显示,最新的

    Key ID 0x517D0F0E


    执行命令:gpg --keyserver wwwkeys.pgp.net --recv-keys0x517D0F0E


    [root@VM-196src]#gpg --keyserver wwwkeys.pgp.net --recv-keys 0x517D0F0E

    gpg: requesting key 517D0F0E from hkpserver wwwkeys.pgp.net

    gpg: key 517D0F0E: public key "LinuxKernel Archives Verification Key <ftpadmin@kernel.org>" imported

    gpg: no ultimately trusted keys found

    gpg: Total number processed: 1

    gpg:               imported: 1

    [root@VM-196 src]# 

    第三步,验证:

    gpg --verify linux-3.11.4.tar.sign linux-3.11.4.tar

    验证成功如下:

    [root@VM-196 src]# gpg --verifylinux-3.11.4.tar.sign linux-3.11.4.tar

    gpg: Signature made Sat 05 Oct 201310:18:29 PM CST using RSA key ID 6092693E

    gpg: Good signature from "GregKroah-Hartman (Linux kernel stable release signing key)<greg@kroah.com>"

    gpg: WARNING: This key is not certifiedwith a trusted signature!

    gpg:          There is no indication that thesignature belongs to the owner.

    Primary key fingerprint: 647F 2865 4894E3BD 4571  99BE 38DB BDC8 6092 693E

    [root@VM-196src]# 

    此处有个警告,可以忽略,如果想知道原因,请见:https://www.kernel.org/category/signatures.html#kernel-org-web-of-trust


    展开全文
  • 使用HASH算法实现文件的断点续传

    千次阅读 2012-12-13 12:40:49
    思路:把大文件按照一定算法分割成很多部分Part文件用MD5算法签名做各个part部分的验证值,客户端下载后用同一个key对下载的part做MD5,结果一样,就完成这一个part的下载,不一样则丢掉继续重新下载。最后下载...
  • 项目介绍: 随着数据规模的越来越大,mysql已经不能适用大数据多维度的查询,需要ES等一类的搜索引擎,进行多维度的分词查询,MYSQL现阶段使用按天分表存储,不能满足跨天的长时间查询。 如何以最快的速度完成数据...
  • 密码加密 —— 提供密码加密模块,可快速MD5、SHA1、SHA256、AES、RSA加密 全局侦听器 —— 在用户登陆、注销、被踢下线等关键性操作时进行一些AOP操作 开箱即 —— 提供SpringMVC、WebFlux等常见web框架starter...
  •  实例155 使用MD5算法对密码进行加密 201 实例156 恺撒密码算法的实现 202 第2篇 Windows窗体篇 第7章 Windows窗体基础 206 7.1 设置窗体位置 207  实例157 控制窗体加载时的位置 207  实例158 设置...
  • 实例155 使用MD5算法对密码进行加密 201 实例156 凯撒密码算法的实现 202 第2篇 Windows窗体篇 第7章 Windows窗体基础 206 7.1 设置窗体位置 207 实例157 控制窗体加载时的位置 207 实例158 设置窗体在屏幕中的位置 ...
  • iOS压缩和解压

    千次阅读 2013-07-04 11:16:29
    当资源文件较多时,压缩成zip格式,通过验证文件MD5值判断文件是否成功下载是一种不错的方式,这里讲一下客户端如何处理zip文件和压缩文件为zip包 我们项目使用的是第三方开源库SSZipArchive,首先在githHub 下载...
  • 验证样本:如何提交验证?比如如何从登录页面中获取样本,其实大多时候后端设计都会为了避免过多恶意的数据库访问而先验证验证码的准确性,例如可以提交明显错误的信息,输入不存在的用户名,将对方网站返回的...
  • 处理文件文件系统的库 金融:会计和财务软件包 游戏开发:游戏开发相关库 地理位置:地理相关的位置信息和工具库 编译器相关:转到其他语言 Goroutines:用于管理和使用Goroutines的工具 图形界面:用于构建GUI应用程序...
  • 更多功能菜单的实现,可下载查看布局文件app_bar_main.xml 参考博客 水平RecyclerView的使用,相关博客:RecyclerViewSnap 场景过度动画 可百度Shared Element Transition 表白墙 涉及代码:LoveActivity...
  • 都下载完了, 也验证下载文件的版本号和MD5后,就要开始批量安装了, 然后开始尝试运行打开这个app, 做最基本的功能检点,最后就要考虑卸载App了。 本篇内容主要介绍如何用Python来批量实现安装apk,卸载apk。 ...
  • 都下载完了, 也验证下载文件的版本号和MD5后,就要开始批量安装了, 然后开始尝试运行打开这个app, 做最基本的功能检点,最后就要考虑卸载App了。 本篇内容主要介绍如何用Python来批量实现安装apk,卸载apk。 ...
  • 第二个难点就是信息的统计,因为统计的方式比较多,涉及到每天的,昨天的,本周,上周,本月,上月,本班级,本级别等各种形式的数据统计,问题就出在了如何获取本周内所有的日期,本月内所有日期获取,解决了这个...
  • 都下载完了, 也验证下载文件的版本号和MD5后,就要开始批量安装了, 然后开始尝试运行打开这个app, 做最基本的功能检点,最后就要考虑卸载App了。 本篇内容主要介绍如何用Python来批量实现安装apk,卸载apk。 ...
  • wxMD5 - 微信小程序 MD5 库 wxBase64 - 微信小程序base64 库 xing-weapp-component - 微信小程序基础组件扩展 wx-statuslayout - 小程序页面状态切换组件 minapp-api-promise - 微信小程序所有 API promise 化 ...
  • 有jQuery背景,该如何用AngularJS编程思想 http://blog.jobbole.com/46589/ AngularJS在线教程 http://each.sinaapp.com/angular angular学习笔记 http://www.zouyesheng.com/angular.html React 地址 ...
  • C#开发经验技巧宝典

    2008-10-14 20:28:23
    1121 如何使用MD5或SHA1加密 682 1122 如何加密DataSet数据集 682 1123 ASP.NET2.0中配置文件的加密与解密 684 1124 如何加密和解密文件 685 1125 加密应用系统软件中的所有数据 686 26.2 登录验证技术 ...
  • asp.net中如何用c#实现弹出式的交互对话窗口.txt cookie登陆判断.txt CSharp基本书写规范.doc CustomValidator可以编程控制.txt html encode.txt html页面中数据绑定.txt html语法大全.txt listbox相互传值.txt MD5....
  • C#编程经验技巧宝典

    热门讨论 2008-06-01 08:59:33
    121 <br>0200 如何使用正则表达式验证电话号码 121 <br>0201 如何使用正则表达式验证输入密码条件 121 <br>0202 如何使用正则表达式验证邮政编号 121 <br>0203 如何使用正则表达式验证手机号 ...
  •  Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...

空空如也

空空如也

1 2 3 4
收藏数 61
精华内容 24
关键字:

如何用md5验证下载文件