MD5功能

MD5算法对任意长度的消息输入,产生一个128位(16字节)的哈希结构输出。在处理过程中,以512位输入数据块为单位。

MD5用途及特征

MD5通常应用在以下场景:

1、防篡改,保障文件传输可靠性

如SVN中对文件的控制;文件下载过程中,网站提供MD5值供下载后判断文件是否被篡改;BT中对文件块进行校验的功能。

2、增强密码保存的安全性。

例如

MD5算法过程

网络中很容易找到MD5算法的相关实现代码,这里就不列出了。我们只需要关心它的实现框架即可。

第一步:消息填充

补长到512的倍数

最后64位为消息长度(填充前的长度)的低64位

一定要补长(64+1~512),内容为100…0(如若消息长448,则填充512+64)

第二步

MD5安全性

MD5虽然被广泛应用,但仍存在弱点,可以被加以破解,

MD5工具

进行MD5的计算,有很多工具可供使用,如本公众号之前的文章《Fiddler使用技巧:强大的数据文本编解码功能》介绍的Fiddler的TextWizard功能,还有各种可以计算文件MD5值的工具。

在网上有许多在线的MD5计算网站,如chinaz的http://tool.chinaz.com/tools/md5.aspx

在MD5的逆向工具方面,也有不少网站提供MD5值的查询,可以根据MD5值反查字符串,这些网站,收集了大量字符串的MD5值,在根据密码的MD5查询字符串时很有用。

如国内的:

http://www.cmd5.com/

http://www.xmd5.org/

国外的:

https://md5online.org/

http://md5decrypt.net/

在一个网站查询不到结果时,多试几个网站,另外,根据使用经验,国外的几个网站查询效果比国内的好。

对MD5的爆破有心得体会,请联系我分享。

长按进行关注。

MD5哈希算法及其原理的更多相关文章

  1. java单向加密算法小结(2)--MD5哈希算法

    上一篇文章整理了Base64算法的相关知识,严格来说,Base64只能算是一种编码方式而非加密算法,这一篇要说的MD5,其实也不算是加密算法,而是一种哈希算法,即将目标文本转化为固定长度,不可逆的字符 ...

  2. 转 白话解析:一致性哈希算法 consistent hashing

    摘要: 本文首先以一个经典的分布式缓存的应用场景为铺垫,在了解了这个应用场景之后,生动而又不失风趣地介绍了一致性哈希算法,同时也明确给出了一致性哈希算法的优点.存在的问题及其解决办法. 声明与致谢: ...

  3. 一致性哈希算法原理及Java实现

     一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似.一致性哈希修正了CARP使用的简 单 ...

  4. 一致性哈希算法原理、避免数据热点方法及Java实现

     一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似.一致性哈希修正了CARP使用的简 单 ...

  5. C# MD5摘要算法、哈希算法

    MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致.是计算机广泛使用的杂凑算法之一(又译摘要算法.哈希算法) MD5算法具有以下特点: 1.压缩 ...

  6. openssl evp 哈希算法(md5,sha1,sha256)

    1. 简述 openssl提供了丰富密码学工具,一些常用的哈希算法 比如md5,sha 可以直接用提供的md5.h ,sha.h 接口使用: 为了方便开发者使用,openssl 又提供了一个EVP, ...

  7. MD5和SHA512Managed ——哈希算法

    本文来自:http://www.cnblogs.com/chuncn/archive/2008/02/26/1082418.html C#的哈希 哈希算法是啥?哈希英文hash,是一种数学算法,它能把 ...

  8. 转:MD5(Message-Digest Algorithm 一种哈希算法)

    什么是MD5算法 MD5讯息摘要演算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码杂凑函数,可以产生出一个128位元(16位元组)的散列值(hash val ...

  9. atitit.md5算法的原理 与 总结

    atitit.md5算法的原理 与 总结 1. MD5的位数 128位1 2. 字节数组转换为32位字符串 base161 2.1. 十六进制字符用4个二进制位来表示1 2.2. byte[]和十六进 ...

随机推荐

  1. 【spring-boot 源码解析】spring-boot 依赖管理梳理图

    在文章 [spring-boot 源码解析]spring-boot 依赖管理 中,我梳理了 spring-boot-build.spring-boot-parent.spring-boot-depen ...

  2. PlayJava Day020

    1.异常Exception补充: ①错误(Error)指的是致命性错误,一般无法处理 ②异常以类的形式封装 程序可以处理的异常对应的类是java.lang.Exception及其子类 运行时异常对应的 ...

  3. js 导航栏多项点击显示下拉菜单代码

    <!DOCTYPE html> <html> <head> <title>Dropdown</title> <!--<link ...

  4. SSM框架之SpringMVC(1)入门程序

    SpringMVC(1) 1.三层架构和MVC 1.1. 三层架构 咱们开发服务器端程序,一般都基于两种形式,一种C/S架构程序,一种B/S架构程序 使用Java语言基本上都是开发B/S架构的程序,B ...

  5. JS MD5 返回二进制格式

    今天靠大佬的帮助,成功的解决了一个弄了好久的问题.起因就是我们要对一个手机号进行加密. 加密方式是把一个字符串进行MD5加密之后,得到原始 16 字符二进制格式.然后把得到的这个字符作为AES的key ...

  6. MySQL数据篇(九)--存储过程实现定时每天清理过期数据

    需求:有一个活动记录表 t_ad ,商家每次发起一个活动,就会在 t_shake_devices_relation 表里面生成一些关联记录.现在写一个存储过程实现,如果活动过期,就将关联表里面的数据标 ...

  7. Python 获 Mozilla 和扎克伯格夫妇 40 余万美金资助

    Python 软件基金会近日发文宣布,收到来自 Mozilla Corporation 和 Chan Zuckerberg Initiative(CZI)的资金赞助,共计 407,000 美元.这笔款 ...

  8. Day7 - Python基础7 面向对象

    本节内容: 1:概述 2:类.对象和方法的创建 3:面向对象三大特性,封装.继承和多态. 4:面向对象中高级篇:类成员:字段.方法.属性 5:类成员的修饰符 6:类的特殊成员 1.概述 面向过程:根据 ...

  9. 201871010112-梁丽珍《面向对象程序设计(java)》第十六周学习总结

    项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p ...

  10. Re-py交易

    python在线反编译 https://tool.lu/pyc/ 获得源码 import base64 def encode(message): s = '' for i in message: x ...