MD5加密(转)

IT知识百科:什么是MD5? 最后给大家来个总结:MD5(Message-Digest Algorithm 5)是一种广泛使用的密码散列函数,能够将任意长度的输入数据转换成一个固定长度的128位(16字节)散列值。这个散列值通常表示为32个十六进制数字的形式。MD5的主要用途是用于数据完整性的校验,例如在网络传输或存储数据时,可以通过计算数据的MD5散列值来检测数据是否被篡改或损坏。然而,由于MD5算法已经被证明存在一些安全漏洞,如碰撞攻击和预映像攻击等,因此它不再被视为一种安全的密码散列函数,不建议在需要高度安全性的场合中使用。 阅读详情

(1)背景介绍:
什么是MD5?

MD5消息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。MD5由美国密码学家罗纳德·李维斯特(Ronald Linn Rivest)设计,于1992年公开,用以取代MD4算法。

密码散列函数(Cryptographic hash function),又译为加密散列函数,是散列函数的一种。

MD4算法在安全上有大的漏洞,但它对在其后才被开发出来的好几种信息安全加密算法的出现却有着不可忽视的引导作用,比如MD5加密算法.

(2)知识剖析:
主要应用:

2.1一致性验证

MD5的典型应用是对一段信息(Message)产生信息摘要(Message-Digest),以防止被篡改。比如,在Unix下有很多软件在下载的时候都有一个文件名相同,文件扩展名为.md5的文件,在这个文件中通常只有一行文本,大致结构如:

MD5 (tanajiya.tar.gz) = 38b8c2c1093dd0fec383a9d9ac940515

MD5将整个文件当作一个大文本信息,通过其不可逆的字符串变换算法,产生了这个唯一的MD5信息摘要。

举例描述:

我们常常在某些软件下载站点的某软件信息中看到其MD5值,它的作用就在于我们可以在下载该软件后,对下载回来的文件用专门的软件(如Windows MD5 Check等)做一次MD5校验,以确保我们获得的文件与该站点提供的文件为同一文件。

具体来说文件的MD5值就像是这个文件的“数字指纹”。每个文件的MD5值是不同的,如果任何人对文件做了任何改动,其MD5值也就是对应的“数字指纹”就会发生变化。比如下载服务器针对一个文件预先提供一个MD5值,用户下载完该文件后,用我这个算法重新计算下载文件的MD5值,通过比较这两个值是否相同,就能判断下载的文件是否出错,或者说下载的文件是否被篡改了。

利用MD5算法来进行文件校验的方案被大量应用到软件下载站、论坛数据库、系统文件安全等方面。

2.2数字签名

MD5的典型应用是对一段Message(字节串)产生fingerprint(指纹),以防止被“篡改”。举个例子,你将一段话写在一个叫 readme.txt文件中,并对这个readme.txt产生一个MD5的值并记录在案,然后你可以传播这个文件给别人,别人如果修改了文件中的任何内容,你对这个文件重新计算MD5时就会发现(两个MD5值不相同)。如果再有一个第三方的认证机构,用MD5还可以防止文件作者的“抵赖”,这就是所谓的数字签名应用。

2.3安全访问认证

MD5还广泛用于操作系统的登陆认证上,如Unix、各类BSD系统登录密码、数字签名等诸多方面。如在Unix系统中用户的密码是以MD5(或其它类似的算法)经Hash运算后存储在文件系统中。当用户登录的时候,系统把用户输入的密码进行MD5 Hash运算,然后再去和保存在文件系统中的MD5值进行比较,进而确定输入的密码是否正确。通过这样的步骤,系统在并不知道用户密码的明码的情况下就可以确定用户登录系统的合法性。这可以避免用户的密码被具有系统管理员权限的用户知道。

2.4算法原理

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

(3)常见问题:

(4)解决方案:

(5)编码实战:
@Test
public void MD5Test(){
String password = “!ytd1129097428”;
String md1 = MD5Util.MD5(password);
String md2 = MD5Util.generate(password);
System.out.println(“加密前:”+password);
System.out.println(“普通MD5加密后:”+md1);
System.out.println(“加盐MD5加密后:”+md2);
System.out.println(“比较原文和加盐MD5加密之后是否一致:”+MD5Util.verify(password,md2));
}

输出结果:

加密前:!ytd1129097428

普通MD5加密后:add4ff4fb01ace59713390dc5876d5d0

加盐MD5加密后:96b911880466d91d3244f37bd56c4531967c28d65181f191

比较原文和加盐MD5加密之后是否一致:true

(6)拓展思考:
关于撞库破解:

这是概率极低的破解方法,原理就是:

1.建立一个大型的数据库,把日常的各个语句,通过MD5加密成为密文,不断的积累大量的句子,放在一个庞大的数据库里.

2.比如一个人拿到了别人的密文,想去查询真实的密码,就需要那这个密文去到提供这个数据库的公司网站去查询.

在线MD5解密: http://www.cmd5.com/

(7)参考文献:

https://www.zhihu.com/question/22651987

https://blog.youkuaiyun.com/dingsai88/article/details/51637977

https://baike.baidu.com/item/MD5

(8)更多讨论:

Q1:1.MD5码不是128位的吗?为何得出来的乱码有的是32位的?

A1:128位是指二进制位。二进制太长,所以一般都改写成16进制,每一位16进制数可以代替4位二进制数,所以128位二进制数写成16进制就变成了128/4=32位。

Q2:2.MD5特点是什么?

A2:1.长度固定:

不管多长的字符串,加密后长度都是一样长

作用:方便平时信息的统计和管理

2.易计算:

字符串和文件加密的过程是容易的.

作用: 开发者很容易理解和做出加密工具

3.细微性:

一个文件,不管多大,小到几k,大到几G,你只要改变里面某个字符,那么都会导致MD5值改变.

作用:很多软件和应用在网站提供下载资源,其中包含了对文件的MD5码,用户下载后只需要用工具测一下下载好的文件,通过对比就知道该文件是否有过更改变动.

4.不可逆性:

你明明知道密文和加密方式,你却无法反向计算出原密码.

作用:基于这个特点,很多安全的加密方式都是用到.大大提高了数据的安全性

Q3:3.什么是MD5加盐?

A3:比如我的银行密码是”12345”

1.得到的MD5是:827ccb0eea8a706c4c34a16891f84e7b

2.一个人截取到这个密文,那么通过撞库肯定容易撞出12345.

3.我们要做的就是加盐,银行密码还是”12345”,然后我把银行密码加上我特定的字符串才计算MD5 所以密码还是那个密码,但是变成求”12345密码加密987”的MD5值,然后再得到MD5,那么这个MD5起码可以确认那个数据库不会有.

原文:https://blog.youkuaiyun.com/learning__java/article/details/90377677

单路径微分相除和微分自乘相减算法(PGC-SDD-DSM) PGC-SDD-DSM算法通过融合单路微分相除和差分自乘,解决了传统PGC解调技术对调制深度和光强干扰敏感的问题,显著提升了解调稳定性和抗失真能力。其高信噪比、低谐波失真以及对参数变化的鲁棒性,使其在光纤传感领域具有重要应用价值。PGC-SDD-DSM算法在计算复杂度方面具有显著的优势,主要体现在其高稳定性和低谐波失真上。这些优势使其在光纤光学干涉传感器中表现出色,尤其是在面对光强干扰和调制深度变化时。 阅读详情

相关推荐

ArcGIS实战:地形湿度指数(TWI)计算全流程解析

本文详细解析了ArcGIS中地形湿度指数(TWI)的计算全流程,从DEM数据获取、填洼处理到水流方向与汇流累积量计算,最终实现TWI的精准计算。通过实战步骤指导,帮助读者掌握水文建模和土壤湿度预测的关键技术,适用于农业规划、生态研究等领域。

weixin_29231725的博客 869

[转]MD5简介

MD5 目录·MD5简介 ·算法的应用 ·算法描述 ·具体的一个MD5实现 ·一些破解MD5的网站 ...

weixin_30824277的博客 4931

用Arduino Mega2560和TB6612驱动MG513电机,我踩过的坑和最佳实践

本文详细介绍了使用Arduino Mega2560和TB6612驱动模块控制MG513直流电机的实战经验,包括硬件连接、PWM配置、编码器信号处理等关键技巧。通过优化电源系统、信号线布局和软件控制算法,有效解决了电机抖动、转速不稳等常见问题,为机器人底盘和自动化项目提供了可靠解决方案。

weixin_42520573的博客 202

【MD5】什么是MD5?md5的简要描述

MD5:英文全称是 Message-Digest Algorithm 5。中文名为 消息摘要算法第五版。它是消息摘要算法,属于 Hash 算法的一种。正常情况下,它的结果是一个 长度为32位的16进制的字符串。也有一些地方会用到 16 位的 MD5的结果,它实际上是从 32位 字符串中取中间的第9位到第24位的部分,即长度是 16位。

No8g攻城狮的博客 1万+

从0开始学GEE python——Google Earth Engine (GEE) 和 geemap 库来获取 Sentinel-2 卫星影像,并将其可视化

这段代码的目的是从 Sentinel-2 卫星影像中获取特定地点的影像,并将其可视化在地图上。通过设置合适的波段和可视化参数,用户可以清晰地查看该地区的卫星影像。

此星光明博客 1167

Windows 11下用Ollama一键部署DeepSeek-R1大模型(附8B/14B版本选择建议)

本文详细介绍了在Windows 11环境下使用Ollama工具一键部署DeepSeek-R1大模型的完整指南,包括8B和14B版本的选择建议。通过硬件评估、安装配置、性能优化等步骤,帮助开发者高效实现本地部署,提升AI应用体验。

weixin_29079643的博客 272

MD5算法全解析

前言 这段时间刚好正在做软件安全的实验和课设,学习了各种加密算法,比如对称加密算法的DES,AES;非对称加密算法的RSA,再如今天要讲的主角-单向加密算法的MD5。为什么这么多算法,MD5成为了今天的猪脚呢?,这是因为个人感觉在目前Android开发中MD5算是比较常用的,所以很值得一讲。所以今天让我带你们来全面认识我们的主角MD5。 一、基本概念 1. 单向加密算法 在介绍MD5算法前,很有必...

jsyjst的博客 9924

避坑指南:合宙Air780EG阿里云一型一密连接时,为什么你的HmacMD5加密总失败?

本文针对合宙Air780EG模组连接阿里云物联网平台时,HmacMD5签名失败的常见问题提供深度解决方案。详细剖析了签名拼接格式、密钥使用、随机数处理及编码大小写等关键陷阱,并结合STM32嵌入式开发环境,给出了串口调试、分步验证及AT指令链路的实用排错技巧,帮助开发者顺利完成一型一密动态注册。

kiwi8的博客 440

基于QT的MD5加密实例

MD5在QT4中已有实现: MD5信息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。MD5由美国密码学家罗纳德·李维斯特(Ronald Linn Rivest)设计,于1992年公开,用以取代MD4算法。这套算法的程序在 RFC 1321 标准...

yangzijiangtou 1423

Livox MID-360与FAST-LIO2实战:从驱动部署到参数调优的完整指南

激光雷达惯性里程计(LIO)是机器人定位与建图(SLAM)领域的核心技术,它通过紧耦合融合激光雷达点云与惯性测量单元(IMU)数据,实现高精度、低漂移的位姿估计。其核心原理在于利用IMU的高频数据预测运动,并用激光雷达的精确测距信息进行校正与优化,从而在快速运动或特征缺失场景下保持鲁棒性。这项技术的工程价值在于为自动驾驶、移动机器人及三维重建提供了可靠的前端里程计解决方案。针对Livox MID-360固态雷达与FAST-LIO2这一热门组合,其应用场景广泛覆盖了室内外导航与地图构建。本文聚焦于**驱动部署

weixin_29997523的博客 446

【PCL点云配准】位姿估计

本文介绍了PCL(Point Cloud Library)中TransformationEstimation模块的核心算法原理和实现方法。该模块通过多种子类(如SVD、LM、双四元数等)提供点云配准功能,支持2D/3D刚性变换估计。主要内容包括:1)各类变换估计算法的数学原理和实现细节;2)点对点/点对面两种误差度量方法;3)线性闭式解和非线性迭代两种求解方式;4)变换验证机制;5)基于三点法的完整代码示例。该模块广泛应用于SLAM、三维重建等领域,为点云配准提供了高效可靠的解决方案。

yijiujiusan的博客 241

C# md5加密,MD5转16位

字符串MD5加密 public static string MD5Encrypt(string EncryptString) { if (string.IsNullOrEmpty(EncryptString)) { throw (new Exception("密文不得为空")); } var clearBytes = Encoding.UTF8.Ge...

the_heart_is_die的博客 2775

Python 爬虫实战:豆瓣 / IMDB 电影数据抓取(评分 + 剧情 + 演员阵容结构化处理)

在数据为王的时代,电影数据是进行市场分析、推荐系统构建和学术研究的重要资源。豆瓣和 IMDB 作为国内外最具影响力的电影评分和资讯网站,包含了海量高质量的电影数据。本文将带领你从零开始,构建一个健壮的 Python 爬虫,用于抓取豆瓣和 IMDB 的电影信息,并将其中的非结构化数据(如剧情简介、演员列表)进行清洗和结构化处理,最终存储到便于分析的结构化文件(如 CSV)中。

yansideyucsdn的博客 956

MD5加密后转String 问题

项目中遇到一个问题,需要使用MD5加密后将字符串上传,尝试了几次发现总是返回签名错误。网上查了很久以后发现 MD5加密后的byte[]数组不能直接toString() 需要将byte[]每一位都转成16进制输出,代码如下 private static String byteToString(String bs) { StringBuilder stringBuil...

jiangchengzi_的博客 5318

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

js实现MD5加密(转)

MD5下载地址 常用方法: hex_md5(value) b64_md5(value) str_md5(value) hex_hmac_md5(key, data) b64_hmac_md5(key, data) str_hmac_md5(key, data) 使用方法: //var password = document.getElementById("password").valu...

图纸的博客 2万+

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

java大写md5_JAVA MD5加密转大写

可以直接复制使用/****/package com.trafree.banking.server.hardcore.util;import java.io.UnsupportedEncodingException;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;/*** @author...

weixin_33188832的博客 2194

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

PHP转JAVA字节MD5加密

对接第三方数据过程中 JAVA加密方法为 DigestUtils.md5Hex("123456".getBytes()); PHP对应代码 /** * Class JavaMd5Hex * 使用方式 * $this->encodeHexString($this->md5Hex($str)); */ class JavaMd5Hex { /** *...

fendouweiqian的博客 1082

java明文转md5_java中使用MD5加密明文

? ? ? ? 密码等重要信息入数据库的时候考虑数据的安全性,会将明文的密码加密,其中MD5就是其中的一种算法,在java中的MessageDigest类就是MD5的具体实现,在将转成的字节数组转成十六进制,起到加密的作用。例子如下:package MD5加密;import java.security.MessageDigest;import java.security.NoSuchAlgorit...

weixin_39631370的博客 245

【转】C#实现MD5加密

【转】C#实现MD5加密 转自:C#实现MD5加密 常用的如下: 方法一 首先,先简单介绍一下MD5 MD5的全称是message-digest algorithm 5(信息-摘要算法,在90年代初由mit laboratory for computer science和rsa data security inc的ronald l. rivest开发出来, 经md2、md3和md...

wuling129的专栏 116

ASP MD5 加密[转]

ASP MD5 加密[转]1. MD5 文件2. 例子1. MD5 文件Private Const BITS_TO_A_BYTE = 8Private Const BYTES_TO_A_WORD = 4Private Const BITS_TO_A_WORD = 32Private m_lOnBits(30)Private m_l2Power(30)Private Function

星☆空 | 对生活要知足,学习要不知足,为人处事要知不足. 卍 ♂ | ♀ 卐 - 科技以人为本. 873

求助:Md5加密C#转JAVA

求助:Md5加密C#转JAVAJAVA端如何编写同样效果的MD5(下面是C#代码)求大神指点下,万分感谢 JAVA端如何编写同样效果的MD5(下面是C#代码) public static string GetMd5HashStr(string str) { string pwd = string.Empty; ...

qq_32149255的博客 491

MD5Encoder加密转String

public class MD5Encoder {     /**      * Md5Encoder      *      * @param string      * @return      * @throws Exception      */     public static String encode(String string) throws Exception

zhp1216 4637

MD5加密算法(转)

一起谈谈MD5加密算法 MD5是一个安全的散列算法,输入两个不同的明文不会得到相同的输出值,根据输出值,不能得到原始的明文,即其过程不可逆;所以要解密MD5没有现成的算法,只能用穷举法,把可能出现的明文,用MD5算法散列之后,把得到的散列值和原始的数据形成一个一对一的映射表,通过比在表中比破解密码的MD5算法散列值,通过匹配从映射表中找出破解密码所对应的原始明文。 对信...

diku9497的博客 485

进行md5加密,转16进制小写

MD5是一种数字摘要算法,常用于确保数据完整性和辨别数据是否被篡改。MD5加密后的结果是一个128位的哈希值,通常以16进制表示。 要进行MD5加密并转为16进制小写,可以使用以下方法之一: 在Python中,可以使用hashlib库的md5函数: import hashlib data = b'Hello, world!' # 待加密的数据 # 进行MD5加密,并转为16进制小写 ha...

weixin_42602726的博客 1573

js版本的md5加密实现 转

调用js函数 hex_md5("abc") 验证通过,js脚本见附件。 参考:http://cssrainbow.cn/tutorials/javascript/391.html http://www.supidea.com/post/js-code-to-md5.aspx

模式 234

C#实现MD5加密(转)

首先,先简单介绍一下MD5 MD5的全称是message-digest algorithm 5(信息-摘要算法,在90年代初由mit laboratory for computer science和rsa data security inc的ronald l. rivest开发出来, 经md2、md3和md4发展而来。 MD5具有很好的安全性(因为它具有不可逆的特征,加过密的密文经过解密后和加

dragoo1的专栏 3487
上一篇: java中Bigdecimal与mysql中的decimal
下一篇: quartz任务调度系统
javaXingzhe
博客等级 码龄8年 3145粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值