当前位置: 首页 > article >正文

MD5是哈希,不是加密,防君子不防小人

一、先把概念说清楚很多开发者在日常交流中习惯说“MD5加密”这个说法流传太久以至于不少人真的以为MD5是一种加密算法。实际上MD5属于哈希Hash算法也叫散列算法或消息摘要算法。加密和哈希的本质区别在于加密是可逆的。明文通过密钥变成密文持有密钥的人可以把密文还原成明文。哈希是不可逆的。任意长度的数据输入后输出固定长度的摘要无法从摘要反推出原文。MD5输出的就是一个128位的哈希值无论输入是一个字符还是一部电影最终都变成32个十六进制字符。这个过程信息是有损的所以不可逆。因此说MD5是“加密”在术语上是不准确的。准确的叫法是MD5是一种哈希算法用来生成消息摘要。二、MD5当年是用来干什么的MD5由Ron Rivest在1991年设计初衷主要有两个应用场景一是完整性校验。文件下载后算一下MD5和官方公布的对比一致就说明文件在传输过程中没有损坏。这里验证的是“有没有被意外改动”不是“有没有被恶意篡改”——这点后面会说。二是密码存储。早期很多系统不存明文密码而是存密码的MD5哈希值。用户登录时把输入的密码算一遍MD5和数据库里的对比对上了就放行。这样就算数据库泄露攻击者拿到的也不是明文密码而是一串哈希值。这两个场景在当年看起来是合理的。MD5计算速度快实现简单消耗资源少在上世纪90年代到本世纪初被广泛使用。三、问题出在哪里“防君子不防小人”这个比喻确实贴切。密码存储太快反而成了致命伤先说密码存储。MD5的一个核心特征是快。快本身不是缺点但在密码存储场景下就成了致命伤。攻击者拿到泄露的哈希值后可以直接暴力枚举常用密码一个个算MD5去比对。算法越快单位时间内能尝试的密码就越多破解效率就越高。GPU让MD5彻底失去抵抗力这个问题在GPU面前被放大了几个数量级。GPU的设计思路和CPU完全不同——CPU擅长串行处理复杂任务而GPU拥有数千个计算核心擅长大规模并行计算。MD5这种算法结构简单、计算步骤规整恰好特别适合在GPU上并行跑。一台普通电脑的CPU每秒大概能算几百万次MD5。但一张高端消费级显卡比如英伟达RTX 4090或更新型号每秒可以计算数百亿甚至上千亿次MD5。这个数量级的差距意味着攻击者用一张显卡就能在短时间内穷举完所有常见密码组合。再配合彩虹表这种预计算技术常见密码的MD5值早就被算好存起来了直接查表比对即可几乎零成本。所以用MD5存密码在今天的硬件条件下基本上等于明文存储加了一层窗户纸。针对这个问题现在密码存储的标准做法是用慢哈希算法比如bcrypt、Argon2。这类算法故意把计算过程做得很慢每次哈希消耗可控但不可忽略的时间和资源。对正常用户来说登录时多花几十毫秒毫无感觉。但对攻击者来说暴力破解的成本会从“一张显卡跑几小时”变成“一堆显卡跑几百年”。再加上随机加盐让同样的密码在不同用户那里生成不同的哈希值彩虹表就彻底失效了。完整性校验碰撞让校验失去意义再说完整性校验。MD5的另一个致命问题是碰撞。2004年王小云教授团队公开了MD5的碰撞攻击方法可以在合理时间内构造出两个内容不同但MD5哈希值完全相同的文件。这意味着攻击者可以准备一个恶意文件让它和正常文件拥有相同的MD5值。如果系统仅凭MD5来判断文件是否被篡改是完全可以被绕过的。2008年研究人员利用MD5碰撞伪造了CA证书。2012年的Flame恶意软件也用了MD5碰撞来伪造微软的数字签名。这些事件之后MD5在安全领域的信用已经彻底破产。2026年的现状漏洞还在出即便到了2026年仍有厂商在使用MD5的安全场景中踩坑。根据美国国家漏洞数据库NVD近期的披露某厂商路由器的固件中使用MD5来生成用户会话的cookie攻击者可以伪造会话直接越权访问设备。另有电商平台使用时间戳作为种子去跑MD5来生成API的Session ID由于熵值严重不足攻击者猜出大概时间就能暴力枚举劫持会话。这些都不是新问题只是旧的错误在新的产品上重复出现。四、那MD5现在还能用吗能用但要看场景。一些不涉及安全的场景MD5依然可以胜任。比如文件去重系统只关心两个文件内容是否相同不担心有人恶意构造碰撞。再比如分布式系统中的数据分片用MD5做哈希环只要求分布均匀不要求抗碰撞。这些场景下MD5计算快、实现简单仍然是一个可用的选择。但凡是和安全沾边的场景都不应该再用MD5。密码存储用bcrypt、Argon2。完整性校验需要防篡改的场景用SHA-256或者带密钥的HMAC。数字签名用SHA-2或SHA-3系列。这些替代方案已经非常成熟切换成本并不高。五、总结MD5是哈希不是加密。它不可逆这是和加密的根本区别。它的历史贡献不小但在今天的硬件条件和已知攻击面前它在安全领域已经不具备实用价值。密码存储该换慢哈希算法完整性校验该换更强的哈希函数。继续在安全场景使用MD5是给自己留隐患。

相关文章:

MD5是哈希,不是加密,防君子不防小人

一、先把概念说清楚很多开发者在日常交流中习惯说“MD5加密”,这个说法流传太久,以至于不少人真的以为MD5是一种加密算法。实际上,MD5属于哈希(Hash)算法,也叫散列算法或消息摘要算法。加密和哈希的本质区别…...

高层次综合设计算法-常见问题记录(一)

一、算法设计思考的重点 1.定点化的陷阱 整数部分数据位宽不足造成的溢出; 舍入导致图像的视觉差异; 小数部分位宽不足导致精度不够,或者效果不佳;2.pipelin流水线的设计 普通变量造成的数据依赖问题,导致II达不到&…...

SaaS ERP和传统ERP,到底差在哪?

这几年,ERP这个词越来越火。但有意思的是,很多企业老板、管理层,甚至已经在用ERP的人,其实都没真正分清:“SaaS ERP”和“传统ERP”,到底差在哪。很多人会觉得:“不都是ERP吗?不就是…...

第一卷第4章:接口而非实现编程

第一卷第4章:接口而非实现编程 目录介绍 00.先回答上篇思考题 0.1 上篇遗留三道题 0.2 云迁移6万行代码 0.3 五次反转补锅 0.4 灵魂五连问 01.从一个搬迁切入 1.1 上云搬迁案例...

4 款主流论文降 AI 软件实测对比!谁能 5 分钟把 AI 率降到 10% 以下

4 款主流论文降 AI 软件实测对比!谁能 5 分钟把 AI 率降到 10% 以下 毕业季最焦虑的事——答辩前剩 3 天、AI 率还有 70%、想找一款 5 分钟就能搞定的工具。 市面上很多工具宣称"几分钟出结果"——但实测下来快的快、慢的慢、效果差距更大。这篇文章实测对…...

智慧展馆(数字孪生 + 三维重建)全解析

智慧展馆(数字孪生 三维重建)全解析一、核心技术体系(含动态目标实时重构、数字孪生、透明建筑)智慧展馆的数字化升级,核心依托四大核心技术 ——视频孪生、三维重建、动态目标实时重构、透明建筑渲染,四大…...

RDMA网络调试实战:当你的应用卡顿时,如何定位是哪种Error导致了重传?

RDMA网络性能调优实战:从重传Error定位到精准修复 RDMA(Remote Direct Memory Access)技术凭借其超低延迟和高吞吐量的特性,已经成为高性能计算、分布式存储和金融交易系统的核心网络架构。但在实际生产环境中,即使是经…...

用Python和nilmtk库,5分钟上手非侵入式用电分析(附实战代码)

用Python和nilmtk库,5分钟上手非侵入式用电分析(附实战代码) 当你站在电表前,看着那个不断跳动的数字,是否好奇过家里每台电器究竟消耗了多少电能?传统方法需要在每个电器上安装传感器,既麻烦又…...

别再死记硬背了!用Python模拟D触发器与JK触发器波形,5分钟搞定时序逻辑难题

用Python动态模拟时序逻辑:D触发器与JK触发器的可视化实践 时序逻辑电路是数字系统设计的核心基础,但对于许多初学者而言,纯理论推导和手工绘制波形图往往令人望而生畏。本文将带你用Python构建一个直观的触发器模拟系统,通过代码…...

Webpack优化实战:从配置到性能调优

Webpack优化实战:从配置到性能调优 大家好,我是蔓蔓。在大厂工作时,我负责过多个大型项目的Webpack配置和优化。今天我来和大家分享Webpack优化的实战技巧。 基础优化 合理配置mode // webpack.config.js module.exports {mode: process.env…...

LangGraph入门:构建有状态的AI Agent工作流

LangGraph 入门:用状态图构建 Agent手写 ReAct 循环容易写出 bug。LangGraph 用「状态图」的方式定义 Agent,把每一步定义为一个节点,跳转逻辑定义为边——清晰、可测试、可扩展。一、为什么需要 LangGraph 手写 Agent 循环的痛点&#xff1a…...

FPGA+DDR3+千兆以太网:构建实时高清图像传输与显示系统(附源码)

1. 实时高清图像传输系统的核心价值 想象一下这样的场景:医疗内窥镜手术中,医生需要实时查看1080p高清影像;工业检测线上,高速摄像头每秒产生数百帧4K画面;无人机航拍时,需要将拍摄的高清视频实时回传到地面…...

从源头到治理:光伏并网逆变器直流分量抑制技术全解析

1. 光伏并网逆变器直流分量问题概述 第一次在光伏电站现场看到直流分量超标告警时,我盯着监控屏幕愣了半天。作为从业多年的光伏系统工程师,我深知这个看似微小的技术指标背后隐藏着多大的隐患。直流分量就像电网中的"隐形杀手",它…...

Linux Ext 调度器核心原理:BPF 驱动的自定义调度革命

简介 Linux 内核调度器自诞生以来,始终以通用公平调度(CFS)与硬实时调度(SCHED_DEADLINE/SCHED_FIFO)为核心,支撑服务器、桌面、嵌入式等全场景负载。但传统调度框架存在硬耦合、难扩展、定制成本极高的痛…...

MATLAB单双目标定实战:逐图解析重投影误差的提取与评估

1. 重投影误差的底层逻辑与MATLAB实现 第一次用MATLAB做相机标定时,盯着那个总均方根误差(Total RMS Error)数值看了半天,总觉得少了点什么。后来才明白,就像考试不能只看总分,标定质量评估也需要细化到每张…...

Linux Idle 调度器的 cpuidle_reflect:Idle 状态统计更新

简介 在 Linux 内核电源管理与调度体系中,CPU Idle(空闲)调度器是实现 CPU 低功耗管理的核心模块,负责在 CPU 无任务可调度时,选择并进入合适的硬件空闲状态(C-state),在性能与功耗…...

从特征稀缺到精准定位:基于HS-FPN与可变形注意力的白细胞检测新范式

1. 白细胞检测的现状与挑战 在医学影像分析领域,白细胞检测一直是个让人头疼的问题。想象一下,医生需要从密密麻麻的血细胞图像中找出白细胞,就像在沙滩上找特定形状的贝壳一样困难。传统方法主要依赖医生手动操作显微镜,不仅效率…...

SmartDock:让Android设备拥有桌面级生产力的智能启动器

SmartDock:让Android设备拥有桌面级生产力的智能启动器 【免费下载链接】smartdock A user-friendly desktop mode launcher that offers a modern and customizable user interface 项目地址: https://gitcode.com/gh_mirrors/smar/smartdock 你是否曾经想过…...

从谐波治理到能量回馈:深入聊聊LCL滤波器在光伏逆变器和PWM整流器里的那些关键设计

LCL滤波器设计实战:从谐波抑制到能量回馈的工程权衡 在光伏逆变器和PWM整流器设计中,电流谐波治理一直是工程师面临的核心挑战。当项目要求总谐波失真率(THD)必须低于3%时,传统L滤波器往往力不从心——要么需要超大电感量导致体积膨胀&#x…...

Cadence变种BOM实战:以IMU模块为例,打造多配置硬件设计流程

1. 从零理解变种BOM的核心价值 第一次接触变种BOM这个概念时,我正被一个IMU模块的项目折磨得焦头烂额。客户要求这个模块能支持五种不同的通信接口,还要可选配导航和RTC功能。这意味着我需要维护十几个不同版本的原理图和BOM表,每次修改都要同…...

蚂蚁百灵 Ring-2.6-1T 开源解析:万亿级思考模型如何实现「按需推理」

引言 2026年5月,蚂蚁百灵团队正式开源了其旗舰级思考模型 Ring-2.6-1T,这是一款拥有万亿参数的推理模型,在 AIME 2026 数学竞赛基准测试中取得了 95.83分 的惊人成绩,一跃成为国产开源 Agent 模型的新里程碑。更值得关注的是,该模型首次引入了 可调节的 Reasoning Effort…...

CST仿真入门实战:Dipole天线结果解读与关键参数分析

1. Dipole天线仿真结果初探 第一次打开CST仿真软件完成Dipole天线仿真后,面对密密麻麻的结果图表,相信很多人都会感到无从下手。我刚开始接触电磁仿真时也是这样,盯着那些S参数曲线和远场辐射图发愣。其实读懂这些结果并不难,关键…...

别再只会用阿里云加速了!手把手教你配置Docker daemon.json,优化日志与存储路径

深度优化Docker生产环境:daemon.json高阶配置实战指南 当Docker从开发测试环境走向生产部署时,默认配置往往成为性能瓶颈和系统隐患的源头。许多团队在遭遇磁盘爆满、日志失控或网络拥塞后,才意识到基础镜像加速只是Docker调优的冰山一角。本…...

零代码构建你的AI知识库:让Obsidian笔记开口说话

零代码构建你的AI知识库:让Obsidian笔记开口说话 【免费下载链接】anything-llm The all-in-one AI productivity accelerator. On device and privacy first with no annoying setup or configuration. 项目地址: https://gitcode.com/GitHub_Trending/an/anythi…...

STM32F429三重ADC+DMA实战:从CubeMX配置到7.2MHz采样率代码调试全流程(避坑指南)

STM32F429三重ADCDMA极限采样实战:从CubeMX配置到7.2MHz数据采集全解析 在工业测量、医疗设备或高频信号分析领域,对高速数据采集的需求日益增长。当常规的单ADC方案无法满足采样率要求时,STM32F429的三重ADC交替采样模式配合DMA传输&#xf…...

在国产UOS系统上搞定Horizon Client for Linux(ARM版)的保姆级安装与排错

在国产UOS系统上搞定Horizon Client for Linux(ARM版)的保姆级安装与排错 当国产操作系统遇上企业级虚拟桌面,技术适配的挑战往往超出预期。最近在华为鲲鹏920芯片的终端上部署Horizon Client时,那些在x86环境下一帆风顺的安装步骤…...

NotebookLM化学辅助实战手册(附ACS期刊PDF解析模板+分子式自动标注插件)

更多请点击: https://kaifayun.com 第一章:NotebookLM化学研究辅助概述 NotebookLM 是 Google 推出的基于人工智能的文档理解与知识协作工具,专为研究者设计,支持对 PDF、TXT 等格式的科学文献进行语义索引、跨文档推理与可追溯问…...

5G网络优化关键参数解读:从入门到实战

5G网络优化中,参数调整是最核心的日常操作。本文系统梳理5G NR关键优化参数,帮助初学者快速建立参数优化知识体系。一、5G NR参数分类5G网络优化参数按功能可分为5大类:类别参数数量核心参数优化频率功率控制参数~30个P0、Alpha、MaxPower高切…...

别再为485传感器没文档发愁了!一个USB转485模块+两款免费软件,5分钟搞定Modbus通信测试

5分钟极简方案:用USB转485模块与开源工具破解Modbus传感器通信 当你拿到一个没有文档的485温湿度传感器时,是否曾为如何读取数据而头疼?本文将分享一套经过实战验证的极简工具组合——仅需一个常见的USB转485转换器和两款免费软件&#xff0c…...

告别云台乱晃!手把手教你用Arduino+SG90舵机实现‘鸡头稳定’效果(附PID模拟器使用心得)

从鸡头稳定到智能云台:ArduinoPID算法实战指南 你是否注意过鸡在行走时头部能保持惊人的稳定?这种被称为"鸡头稳定"的生物现象,启发了工程师们设计出能自动补偿晃动的智能云台系统。本文将带你用Arduino、SG90舵机和MPU6050传感器&…...