• MD5( 信息摘要算法)的概念原理及python代码的实现


    简述:

    message-digest algorithm 5(信息-摘要算法)。经常说的“MD5加密”,就是它→信息-摘要算法。

    md5,其实就是一种算法。可以将一个字符串,或文件,或压缩包,执行md5后,就可以生成一个固定长度为128bit的串。这个串,基本上是唯一的。

    不可逆性:

    每个人都有不同的指纹,看到这个人,可以得出他的指纹等信息,并且唯一对应,但你只看一个指纹,是不可能看到或读到这个人的长相或身份等信息。

    特点

    1. 压缩性:任意长度的数据,算出的MD5值长度都是固定的。
    2. 容易计算:从原数据计算出MD5值很容易。
    3. 抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。
    4. 强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。

    MD5长度

    md5的长度,默认为128bit,也就是128个0和1的二进制串。这样表达是很不友好的。所以将二进制转成了16进制,每4个bit表示一个16进制,所以128/4 = 32 换成16进制表示后,为32位了。

    为什么网上还有md5是16位的呢?

    其实16位的长度,是从32位md5值来的。是将32位md5去掉前八位,去掉后八位得到的。

    python代码实现

    基本的example:

     1 # -*- coding: utf-8 -*-
     2 # coding=utf-8
     3 import hashlib
     4 
     5 print("example one")
     6 str = "this is a md5 test"
     7 
     8 h1 = hashlib.md5()
     9 
    10 h1.update(str.encode(encoding='utf-8'))
    11 
    12 print("MD5 ency before:" + str)
    13 print("MD5 ency after:" + h1.hexdigest())
    14 
    15 
    16 print("example two")
    17 str = "this is a md5 testQQQQQQQQQQQQQQQQQQQQQQqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
    18 
    19 h1 = hashlib.md5()
    20 
    21 h1.update(str.encode(encoding='utf-8'))
    22 
    23                                                               1,1           Top
    View Code

    参考文档: https://www.jianshu.com/p/4ba20afacce2

  • 相关阅读:
    使用TortoiseSVN建本地仓库20100114
    通用分布式缓存介绍
    fujishu的本真的挺好的
    春晚架构&Ylmf OS&Chrom OS
    sqlserver开发杂记20100120
    tsql使用小记20100127
    mac下hg的安装
    小毛新年祝辞——整装待发,为梦想行
    Memcached客户端评测报告20100125
    小毛iBatis.net保姆系列课程索引
  • 原文地址:https://www.cnblogs.com/dylancao/p/9382564.html
Copyright © 2020-2023  润新知