MDT(Message Digest)将任何长度的数据变换为固定长为128位(16字节)(数量大概是地球上沙粒数量)

SHA(Secure Hash Algorithm)是另一组散列函数

SHA-0/SHA-1输出散列值160位(20字节)

SHA-256/SHA-244分别输出256位、224位,

SHA-512/SHA-384分别输出512位和384位

160位和256位的大小

  • 160位二进制相当于10的48次方,地球上水分子数量估计是47次方

  • 256位二进制相当于10的77放,一直宇宙所有基本粒子大约是72-87次方

注意:

  • 虽然今年发现MD5/SHA-0/SHA-1三种散列函数,能够以极特殊的情况下来构造个别碰撞(散列冲突),但是在实用中从未有实际的威胁


python散列函数库hashlib

print(hashlib.md5('hello world'.encode('utf-8')).hexdigest())
print(hashlib.sha1('hello world'.encode('utf-8')).hexdigest())

>>> 5eb63bbbe01eeed093cb22bb8f5acdc3
>>> 2aae6c35c94fcfb415dbe95f408b9ce91ee846ed

注意:由于python3中字符串默认为unicode编码,而hashlib只支持字节二进制字符串,所以需要将输入的字符串进行转码

应用范围

  1. 数据文件一致性判断

    1. 为每个文件计算其散列值,仅对比其散列值即可得知是否文件内容相同

    2. 用于网络文件下载完整性校验

    3. 用于文件分享系统:网盘中相同的文件(视频、音频文件)可以无需存储多次

  2. 加密形式保存密码

    1. 保存密码的md5值,加强密码安全性

  3. 放文件篡改

    1. 原理同数据文件一致性判断

  4. 彩票投注应用

    1. 彩民下注前,机构将中奖的结果散列值公布,然后彩棉投注,开奖后,彩民可以通过公布结果和散列值对比,验证机构是否作弊

本文地址: http://chenxm.cc/article/1043.html
版权声明: 本文为原创文章,版权归  陈新明  所有,欢迎分享本文,转载请保留出处!
上一篇: celery kill 信号 启动关闭 命令
下一篇: python 读取word文件 docx2txt和textract
发表评论

还没有留言,还不快点抢沙发?