MD5介绍

作者: 王小冬 | 来源:发表于2018-08-20 20:41 被阅读190次

md5介绍

1. md5简介

md5的全称是md5信息摘要算法(英文:MD5 Message-Digest Algorithm ),一种被广泛使用的密码散列函数,可以产生一个128位(16字节,1字节8位)的散列值(常见的是用32位的16进制表示,比如:0caa3b23b8da53f9e4e041d95dc8fa2c),用于确保信息传输的完整一致。

2. md5原理

md5将整个文件当做一个大文本信息,通过不可逆的字符串变换算法,产生一个唯一的MD5信息摘要。文件的md5类似于人的指纹,在世界上是独立无二的,如果任何人对文件做了任何改动,其md5的值也就是对应的“数字指纹”都会发生变化。

对MD5算法简要的叙述可以为:MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。

md5与对称和非对称加密算法不同,这两种密码是防止信息被窃取,而摘要算法的目标是用于证明原文的完整性。

3. md5特性

1. 不可逆

没有系统有办法知道md5原来的文字是什么。

2. 具有高度的离散性

md5码具有高度的散列性,没有规律可循,哪怕原信息只有一点点的变化,比如多个空格,那么就会导致md5发生巨大变化,也可以说产生的md5码是不可预测的。

3. 压缩性

任意长度的数据,算出的md5值得长度都是固定的。

4. 弱碰撞性

已知原数据和其md5的值,想找到一个具有相同md5值得数据(即伪造数据)是非常困难的。

4. md5的用途

  • 密码的加密存储,用户设置密码时,服务端只记录这个密码的MD5,而不记录密码本身,以后验证用户身份时,只需要将用户输入的密码再次做一下MD5后,与记录的MD5作一个比较即可验证其密码的合法性。
  • 数字签名,比如发布一个程序,为了防止别人在你的程序里插入病毒或木马,你可以在发布这个程序的同时,公开这个程序文件的MD5码,这样别人只需要在任何地方下载这个程序后做一次MD5,然后跟公开的这个MD5作一个比较就知道这个程序是否被第三方修改过。
  • 文件完整性验证,比如当下载一个文件时,服务器返回的信息中包括这个文件的md5,在本地下载完毕时进行md5,将两个md5值进行比较,如果一致则说明文件完整没有丢包现象。
  • 文件上传,比如百度云实现的秒传,就是对比你上传的文件md5在百度服务器是否已经存在了。

5. 一些疑问

1. 同一个文件用不同的语言计算出来的md5一样吗?

只要算法正确,都是一样的。

2. 拷贝的文件md5会改变吗?

不会。

3. 还有什么其他的摘要算法么?

除了MD5,还有更安全的SHA-1,SHA-2(包括SHA-224、SHA-256、SHA-384,和SHA-512 ),SHA-3,RIPEMD-160等哈希加密算法

参考:

关于王小云破解MD5之我见 :https://blog.csdn.net/raptor/article/details/97270

MD5作用有哪些:https://blog.csdn.net/jike_yangyujing/article/details/80512205

MD5算法原理及其实现:https://blog.csdn.net/u012611878/article/details/54000607

相关文章

  • 2018-01-08 MD5加密介绍、C# 网口传输总结、As

    第一组:刘聪 MD5加密介绍 1. MD5介绍 MD5全名Message Digest Algorithm 5 ...

  • MD5介绍

    md5介绍 1. md5简介 md5的全称是md5信息摘要算法(英文:MD5 Message-Digest Alg...

  • SHA

    SHA 算法简介 之前已经介绍过 MD5 算法的使用,从生成的 MD5 值我们可以看出,MD5 加密过后的长度是 ...

  • golang中crypto/md5包

    md5包实现了MD5哈希算法 先介绍这个包内里的内容,然后再给出生成一个md5值,go使用md5比较复杂很多,ph...

  • Java 实现 MD5

    本文介绍 Java 语言实现 MD5 Hash 的多种方法。 目录 MD5 简介 实现方法基于 Java API基...

  • MD5加密讲解(C#版)

    1、先简单介绍一下什么是MD5 MD5的全称是message-digest algorithm 5(信息-摘要算法...

  • MD5运算

    MD5:全称Message Digest Algorithm MD5(中文名为消息摘要算法第五版)。详细介绍见ht...

  • Python MD5加密

    本文介绍使用Python内置哈希库对字符串进行MD5加密的方法,MD5的全称是Message-Digest Alg...

  • 简单登录逻辑Demo

    结合MD5加密的方式,简单介绍一下登录保存账号密码的逻辑前言:1."NSString+Hash.h"是一个MD5加...

  • 深入网络编程(第一篇)

    本篇博客的主要知识点是: 1 RSA的简单介绍 2 MD5的加密算法的使用 3 MD5的hmac方式的异步的时间戳...

网友评论

    本文标题:MD5介绍

    本文链接:https://www.haomeiwen.com/subject/orhriftx.html