MD5哈希算法及其原理
—
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哈希算法及其原理的更多相关文章
- java单向加密算法小结(2)--MD5哈希算法
上一篇文章整理了Base64算法的相关知识,严格来说,Base64只能算是一种编码方式而非加密算法,这一篇要说的MD5,其实也不算是加密算法,而是一种哈希算法,即将目标文本转化为固定长度,不可逆的字符 ...
- 转 白话解析:一致性哈希算法 consistent hashing
摘要: 本文首先以一个经典的分布式缓存的应用场景为铺垫,在了解了这个应用场景之后,生动而又不失风趣地介绍了一致性哈希算法,同时也明确给出了一致性哈希算法的优点.存在的问题及其解决办法. 声明与致谢: ...
- 一致性哈希算法原理及Java实现
一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似.一致性哈希修正了CARP使用的简 单 ...
- 一致性哈希算法原理、避免数据热点方法及Java实现
一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似.一致性哈希修正了CARP使用的简 单 ...
- C# MD5摘要算法、哈希算法
MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致.是计算机广泛使用的杂凑算法之一(又译摘要算法.哈希算法) MD5算法具有以下特点: 1.压缩 ...
- openssl evp 哈希算法(md5,sha1,sha256)
1. 简述 openssl提供了丰富密码学工具,一些常用的哈希算法 比如md5,sha 可以直接用提供的md5.h ,sha.h 接口使用: 为了方便开发者使用,openssl 又提供了一个EVP, ...
- MD5和SHA512Managed ——哈希算法
本文来自:http://www.cnblogs.com/chuncn/archive/2008/02/26/1082418.html C#的哈希 哈希算法是啥?哈希英文hash,是一种数学算法,它能把 ...
- 转:MD5(Message-Digest Algorithm 一种哈希算法)
什么是MD5算法 MD5讯息摘要演算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码杂凑函数,可以产生出一个128位元(16位元组)的散列值(hash val ...
- atitit.md5算法的原理 与 总结
atitit.md5算法的原理 与 总结 1. MD5的位数 128位1 2. 字节数组转换为32位字符串 base161 2.1. 十六进制字符用4个二进制位来表示1 2.2. byte[]和十六进 ...
随机推荐
- Java基础专题
Java后端知识点汇总——Java基础专题 全套Java知识点汇总目录,见https://www.cnblogs.com/autism-dong/p/11831922.html 1.解释下什么是面向对 ...
- 【转载】Android Context 到底是什么?
什么是Context? 一个Context意味着一个场景,一个场景就是我们和软件进行交互的一个过程.比如当你使用微信的时候,场景包括聊天界面.通讯录.朋友圈,以及背后的一些数据. 那么从程序的角度来看 ...
- 【转】java的string中,关于split空串总会返回单个元素的数组
原地址:http://blog.sina.com.cn/s/blog_6f3da9650102x03c.html public class Split { public static void mai ...
- windows下同时安装多个python版本的方法
根据项目的需要,我的电脑上需要安装的python不止一个版本,比如同时需要python2.7和python3.6: 安装多个python版本 这时需要下载多个python安装包,为了区分不同的pyth ...
- Saltstack_使用指南17_salt-ssh
1. 主机规划 salt 版本 [root@salt100 ~]# salt --version salt (Oxygen) [root@salt100 ~]# salt-minion --versi ...
- 示例:Oracle表锁、行锁模拟和处理
for update模拟锁表 --session 1 SQL> select * from tt for update; --session 2 SQL> update tt set id ...
- java8-10-Stream的终止操作
Stream的终止操作 * allMatch 是否匹配所有 * anyMatch 是否匹配一个 * noneMatch 是否没有匹配一个 * findFirst 返回第一个 * count ...
- 《Web Development with Go》两个Middleware执行顺序
也加了如果有认证时的执行流程: 一个错误, 一个正确. package main import ( "fmt" "log" "net/http&quo ...
- day_93_11_25爬虫一requests,项目框架
总结 nginx反向代理与正向代理. 正向带里就是,客户端通过中转服务器,访问其它他服务器的数据. 反向代理就是用户访问中转服务器,看起来就像和这台服务器交互一样. nginx动静分离. 当客户端访问 ...
- acwing 25. 剪绳子
习题地址 https://www.acwing.com/problem/content/description/24/ 题目描述 给你一根长度为 nn 绳子,请把绳子剪成 mm 段(mm.nn 都是整 ...