新闻详情

新闻详情

首页 / 资讯中心 / 详情

哈希函数入门:5分钟搞懂 MD5/SHA 系列算法

发布时间:2026/9/27 2:07:46来源:尧图网络
哈希函数入门:5分钟搞懂 MD5/SHA 系列算法
面试常被问MD5 和 SHA256 有什么区别很多人只知道一个 32 位一个 64 位但说不清什么是哈希函数、为什么叫单向、什么是雪崩效应。本文从三个核心性质到五种常见算法把哈希的基础彻底讲透。什么是哈希函数哈希函数Hash Function是一种将任意长度的输入数据转换为固定长度输出的函数。这个输出就叫哈希值、摘要或散列值。输入任意长度 → 哈希函数 → 输出固定长度核心特征输入可以是任何内容——一个字符、一段文字、一张图片、一个 10GB 的文件——输出长度始终不变。三个核心性质1. 单向性One-way只能从输入算输出不能从输出反推输入。// 计算 SHA256 很容易consthashsha256(Hello World)// d2a84f4b8b650937ec8f73cd8be2c74add5a911ba64df27498ed22a0d624c945// 但你不可能从这个 64 位字符串反推出 Hello World// 唯一方法是暴力枚举所有可能的输入2. 确定性Deterministic相同的输入永远产生相同的输出。importhashlib# 同一段数据无论算多少次、用什么语言算结果都一样print(hashlib.sha256(bHello).hexdigest())# 185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969# 再算一遍结果完全一致print(hashlib.sha256(bHello).hexdigest())# 185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969这个性质是哈希能用于数据校验的基础——如果两段数据的哈希值相同就可以认为数据相同。3. 雪崩效应Avalanche Effect输入的微小变化会导致输出的巨大变化。哪怕只改一个字符哈希值也会完全不同。// 原始文本sha256(Hello World)// d2a84f4b8b650937ec8f73cd8be2c74add5a911ba64df27498ed22a0d624c945// 把小写 w 改成大写 Wsha256(Hello World)// d2a84f4b8b650937ec8f73cd8be2c74add5a911ba64df27498ed22a0d624c945// 再加一个空格sha256(Hello World )// 0a4d55a8d778e5022fab701977c5d840bbc486d0e5296950b1acb66dcc40f2b9第一个字符就变了两个哈希值看起来完全不相关。雪崩效应确保攻击者无法通过观察哈希值的变化来推断输入的变化。五种常见哈希算法算法输出长度位十六进制字符数发布时间设计者MD5128 位32 字符1992Ron RivestSHA-1160 位40 字符1995NSASHA-256256 位64 字符2001NSASHA-384384 位96 字符2001NSASHA-512512 位128 字符2001NSASHA 家族的关系SHA-1第一代安全哈希算法160 位输出SHA-2第二代包含 SHA-224、SHA-256、SHA-384、SHA-512 四个变体数字表示输出位数SHA-3第三代Keccak2015 年发布与 SHA-2 设计完全不同用浏览器 Web Crypto 计算哈希现代浏览器内置了 Web Crypto API可以直接计算 SHA 系列哈希asyncfunctioncomputeSHA256(text){constencodernewTextEncoder()constdataencoder.encode(text)constbufferawaitcrypto.subtle.digest(SHA-256,data)constbytesnewUint8Array(buffer)// 转十六进制字符串lethexfor(leti0;ibytes.length;i){consthbytes[i].toString(16)hexh.length1?0h:h}returnhex}computeSHA256(Hello World).then(console.log)// d2a84f4b8b650937ec8f73cd8be2c74add5a911ba64df27498ed22a0d624c945crypto.subtle.digest()是浏览器原生 API性能非常高支持 SHA-1、SHA-256、SHA-384、SHA-512 四种算法。注意Web Crypto API 只在安全上下文HTTPS 或 localhost中可用。MD5 不在 Web Crypto 支持范围内需要第三方库实现。Node.js 对照constcryptorequire(crypto)functioncomputeHash(text,algorithm){returncrypto.createHash(algorithm).update(text,utf-8).digest(hex)}console.log(computeHash(Hello World,md5))// b10a8db164e0754105e766fea50c4316console.log(computeHash(Hello World,sha1))// 0a4d55a8d778e5022fab701977c5d840bbc486d0console.log(computeHash(Hello World,sha256))// d2a84f4b8b650937ec8f73cd8be2c74add5a911ba64df27498ed22a0d624c945console.log(computeHash(Hello World,sha384))// 99514329186b2f6ae4a1329e7ee6c610a729636335174...console.log(computeHash(Hello World,sha512))// 2c74fd17edafd80e8447b0d46741ee243b7eb74dd2149a...Node.js 的crypto.createHash支持更全的算法包括 MD5。Python 对照importhashlib textHello Worldprint(hashlib.md5(text.encode(utf-8)).hexdigest())# b10a8db164e0754105e766fea50c4316print(hashlib.sha1(text.encode(utf-8)).hexdigest())# 0a4d55a8d778e5022fab701977c5d840bbc486d0print(hashlib.sha256(text.encode(utf-8)).hexdigest())# d2a84f4b8b650937ec8f73cd8be2c74add5a911ba64df27498ed22a0d624c945三种语言对同一段文本计算出的 SHA256 完全一致——这就是确定性的体现。哈希的常见用途用途说明常用算法密码存储存哈希值不存明文验证时对比哈希bcrypt、Argon2不是通用哈希文件校验下载后对比哈希验证文件完整SHA256、MD5数据去重相同内容哈希相同只存一份SHA1、MD5数字签名对哈希值签名而非对原文签名SHA256 RSA/ECDSA区块链区块哈希串联保证不可篡改SHA256比特币Git每个对象用 SHA1 标识内容SHA1在线练习理解哈希函数最快的方式是拿真实数据算一遍。可以在 盘子工具站哈希计算工具 上做这种练习——输入Hello World工具同时显示 MD5、SHA1、SHA256、SHA384、SHA512 五种算法的结果。你可以做三个实验定长验证输入不同长度的文本一个字、一句话、一段文章观察每种算法的输出长度始终不变32/40/64/96/128 字符雪崩效应输入Hello和Hello多加一个空格对比 SHA256 结果——完全不同一致性验证复制工具计算出的 SHA256 值用 Python 或 Node.js 算一遍结果完全相同工具还支持上传文件计算哈希——拖拽一个本地文件上去即时获得五种算法的哈希值。所有计算在浏览器本地完成不上传服务器适合处理敏感数据。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

高端网站设计上海网站建设上海进阶技巧 2026/9/27 2:55:22

高端网站设计上海网站建设上海进阶技巧

不懂代码?上海高端网站设计完整流程拆解 很多老板找到我,第一句话都是:“我想做个网站,但我不会写代码,怎么办?” 在上海做高端网站建设,这不仅是技术问题,更是信任问题。你不需要懂后端逻辑,但必须懂 完整流程 。…

阅读更多 →
同样叫光子嫩肤,到店前最该问的不是价格 2026/9/27 2:55:16

同样叫光子嫩肤,到店前最该问的不是价格

一张光子嫩肤海报通常能告诉你项目名和入口价,却不会告诉你谁来判断、设备是什么、哪些皮肤状态需要暂停。准备比较几家店时,先把这三件事问明白,再看价格,才不容易被一张低价图带着走。海报只回答了很小一部分暗沉、红印、毛孔和…

阅读更多 →
学习建设网站开发app适合什么场景 2026/9/27 2:55:16

学习建设网站开发app适合什么场景

自学建站开发APP太慢?这份保姆级建站教程让你一周上线 改个需求建站公司拖一周,这种憋屈谁没经历过?明明只是改个按钮颜色或加个联系方式,对方却要排期三天,理由永远是“开发资源紧张”。很多中小企业主和运营人员发现,与其花钱找外包还要看脸色,不…

阅读更多 →
国内下载Codex慢怎么办?codex-app-mirror短链直连完整使用教程:一条链接自动选路+SHA256校验 2026/9/27 2:55:16

国内下载Codex慢怎么办?codex-app-mirror短链直连完整使用教程:一条链接自动选路+SHA256校验

国内下载Codex慢怎么办?codex-app-mirror短链直连完整使用教程:一条链接自动选路SHA256校验 【免费下载链接】codex-app-mirror 原样镜像官方 Codex 桌面应用:每 15 分钟探测、SHA256 可校验、国内直连下载、 Mac 可增量更新 | Verbatim, verifiable mir…

阅读更多 →
Java手撕数据结构01: 什么是List? 2026/9/27 2:55:09

Java手撕数据结构01: 什么是List?

本系列使用 Java 语言完整讲解数据结构内容,前面已经铺垫两章前置内容,而本篇作为正式内容开篇,将从抽象层面讲清楚 List(线性表)的定义、特性、分类,区别抽象概念和具体实现,为后续顺序表和链表…

阅读更多 →
比光子嫩肤机构时,距离和价格都别先下结论 2026/9/27 2:55:03

比光子嫩肤机构时,距离和价格都别先下结论

长沙的光子嫩肤搜索结果里,医院相关科室、连锁机构和本地医疗美容诊所常常出现在同一屏。曼肤医疗美容是其中一家本地诊所。把它和其他机构放在一起比较,距离和价格当然要看,但要等医疗主体、医生和设备先对上,才不容易下错结论。…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉