用python计算md5,sha1,crc32

原文:http://blog.csdn.net/marshall001/article/details/50097705


为了确保从网上下载的文件或程序完整并且没有被篡改,一般官网上都会给出文件的md5或sha1。我们拿到一个软件,第一步应当是校验这个值与官网给的是否一致,如果不一致的话就赶紧删掉吧。

在Mac上计算一个文件的md5, sha1, crc32:

命令 输出
md5 shark.jpg MD5 (shark.jpg) = 61aead6a48da0fb25618333590745aa7
shasum shark.jpg acfe8421e3ad39cf73f19cef02aa3e692e25d5a2 shark.jpg
crc32 shark.jpg adc64e03

Python也能做这个工作,其中md5和sha1需import hashlib, crc32可以import zlib

#!/usr/bin/env python3

from hashlib import md5, sha1
from zlib import crc32
import sys

def getMd5(filename): #计算md5
    mdfive = md5()
    with open(filename, 'rb') as f:
        mdfive.update(f.read())
    return mdfive.hexdigest()

def getSha1(filename): #计算sha1
    sha1Obj = sha1()
    with open(filename, 'rb') as f:
        sha1Obj.update(f.read())
    return sha1Obj.hexdigest()

def getCrc32(filename): #计算crc32
    with open(filename, 'rb') as f:
        return crc32(f.read())

if len(sys.argv) < 2:
    print('You must enter the file')
    exit(1)
elif len(sys.argv) > 2:
    print('Only one file is permitted')
    exit(1)

filename = sys.argv[1]

print('{:8} {}'.format('md5:', getMd5(filename)))
print('{:8} {}'.format('sha1:', getSha1(filename)))
print('{:8} {:x}'.format('crc32:', getCrc32(filename)))
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34

$ python3 test.py shark.jpg,输出:

md5:     61aead6a48da0fb25618333590745aa7
sha1:    acfe8421e3ad39cf73f19cef02aa3e692e25d5a2
crc32:   adc64e03
 
 
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

与mac上的计算一致。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用易语言 设计Python窗口组件 易友专属,毕竟易语言组件操作功能齐全也方便 可参考老版本介绍:https://bbs.125.la/forum.php?mod=viewthreadtid=14463987 2.191103 版本更新: 1.增加组件,组合框,超级列表框代码生成 2.增加功能,支持生成TTK组件代码(易语言内的windows通用组件库6.0版) 3.功能增加,增加新事件绑定 鼠标左键单击用法: 打开源码,在启动窗口直接设计窗口组件,已支持 标签,组合框,编辑框,按钮,单选框,多选框,超级列表框 组件的创建跟事件绑定及部分属性代码生成,需要其他属性的可以根据源码自行添加或评论留言。窗口设计完后按F5调试程序,窗口出现的时候代码也就自动生成好了,直接去Python里粘贴即可调试 Python模块EP.py 已封装200+常用命令 函数命名跟各种操作已尽量仿照精易模块 ,用起来还是熟悉的味道。 模块内已有函数(模块内需要安装的第三方库都已备注) 已有命令 返回返回调试输出到文本到整数到数值对象到文本到元组到列表到字典到字节到字节数组序列_是否都为真序列_是否有真字节数组_清空字节数组_顺序反转取数据类型取数据长度集合文本_取出现次数文本_是否指定文本结尾文本_是否指定文本开头文本_TAB转空格文本_寻找文本文本_倒找文本文本_寻找文本index文本_倒找文本index文本_是否全十进制数字U文本_是否全数字字母文本_是否全数字文本_是否全数字U文本_是否全空格文本_是否标题化文本_是否全小写文本_是否全大写文本_是否全字母文本_标题化文本_首字母转大写文本_到小写文本_到大写文本_大小写字符到小写文本_大小写翻转文本_拼接文本_居中文本_左对齐文本_右对齐文本_右对齐0文本_删左边全部空格文本_删右边全部空格文本_删首尾指定字符文本_三元分割_左文本_三元分割_右文本_子文本替换文本_分割文本文本_换行分割文本_生成翻译表文本_转换字符文本_按键名转键值文本_键值转按键名文本_取出中间文本文本_取文本左边文本_取文本右边文本_取左边文本_取右边文本_取字符长度文本_取随机IP文本_取随机邮箱文本_取随机手机号文本_取随机字母文本_取随机数字文本_取随机字符文本_取随机姓氏文本_取随机汉字文本_取随机范围数字文本_到时间_datetime文本_取中间_批量文本_拼音转换数值_求次方数值_四舍五入数值_取绝对值数值_取上入整数数值_取下入整数数值_取最大数数值_取最小数字典_取值并删除字典_取指定键值字典_清空字典_拷贝字典_生成字典_转列表字典_取全部键字典_取全部值字典_取出并删除最后键值字典_取值添加列表_转字典列表_加入成员列表_插入成员列表_取出现次数列表_加入新列表列表_查找成员位置列表_取值并删除列表_删除指定值列表_倒序排列列表_大小排序时间_取指定格式时间时间_亚马逊操作时间时间_取启动时间时间_取现行时间time时间_取日期时间_取某年某月日历时间_取某年日历时间_是否为闰年时间_指定范围闰年总数时间_取某月天数时间_取某月一号星期几时间_取某天星期几时间_取现行时间datetime时间_取随机时间戳时间_格式化时间_文本转datetime时间时间_datetime时间转文本时间_增减datetime时间_取上月最后一天时间_取时间间隔时间_时间转时间戳时间_时间戳转时间时间_取现行时间戳队列_创建队列队列_加入成员队列_取出成员队列_取队列成员数队列_清空队列队列_是否为空队列_是否已满正则_匹配编码_编码编码_解码编码_UTF8编码编码_UTF8解码编码_GBK编码编码_GBK解码编码_URL编码编码_URL解码编码_ANSI到USC2编码_USC2到ANSI编码_BASE64编码编码_BASE64解码加密_MD5加密_SHA加密_SHA3加密_HmacSHA256加密_CRC32JS_调试JS_加载JS_运行GZIP_压缩GZIP_解压文件_取运行目录文件_更改当前工作目录文件_更改当前进程目录文件_遍历指定路径文件文件_遍历指定路径所有子目录文件_创建单层目录文件_创建多层目录文件_删除文件文件_删除文件2文件_删除单层空目录文件_删除多层空目录文件_获取访问修改时间文件_设置访问修改时间文件_重命名文件_修改权限文件_是否为绝对路径文件_是否为目录文件_是否为文件文件_是否存在文件_取文件大小文件_取最近访问时间文件_取创建时间文件_取修改时间文件_取文件目录文件_取路径文件名文件_文件扩展名分割文件_目录文件名分割文件_创建文件文件_检测权限文件_写入文件文件_读取文件文件_读取某行数据_排列数据_组合数据_排列组合进制_十到二进制_十到八进制_十到十六进制_二到十进制_八到十

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值