<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>哈希 on Albert Intelligence</title><link>https://blog.hialbert.online/tags/%E5%93%88%E5%B8%8C/</link><description>Recent content in 哈希 on Albert Intelligence</description><generator>Hugo -- gohugo.io</generator><language>zh-CN</language><lastBuildDate>Tue, 05 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.hialbert.online/tags/%E5%93%88%E5%B8%8C/index.xml" rel="self" type="application/rss+xml"/><item><title>网站密码加盐的原理</title><link>https://blog.hialbert.online/post/%E7%BD%91%E7%AB%99%E5%AF%86%E7%A0%81%E5%8A%A0%E7%9B%90%E7%9A%84%E5%8E%9F%E7%90%86/</link><pubDate>Tue, 05 May 2026 00:00:00 +0000</pubDate><guid>https://blog.hialbert.online/post/%E7%BD%91%E7%AB%99%E5%AF%86%E7%A0%81%E5%8A%A0%E7%9B%90%E7%9A%84%E5%8E%9F%E7%90%86/</guid><description>&lt;h1 id="密码哈希与加盐从原理到实战"&gt;密码哈希与加盐：从原理到实战
&lt;/h1&gt;
 &lt;blockquote&gt;
 &lt;p&gt;核心命题：&lt;strong&gt;假设数据库一定会被拖走，怎么让攻击者拿到也没用？&lt;/strong&gt;&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;blockquote class="alert alert-info"&gt;
 &lt;div class="alert-header"&gt;
 &lt;span class="alert-icon"&gt;&lt;/span&gt;
 &lt;span class="alert-title"&gt;在本仓库中的位置&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="alert-body"&gt;
 &lt;p&gt;这是 &lt;a class="link" href="https://blog.hialbert.online/post/claude-code-vibe-coding-%e5%ba%94%e7%94%a8%e7%9a%84%e6%9e%b6%e6%9e%84%e5%88%86%e6%a1%a3%e6%89%8b%e5%86%8c/" &gt;Claude Code Vibe Coding 应用的架构分档手册&lt;/a&gt; 中「鉴权与支付」一节的&lt;strong&gt;深度展开&lt;/strong&gt;。
任何 Tier ≥ 1 的应用，密码存储方案都要按本文执行。&lt;/p&gt;
 &lt;/div&gt;
 &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="一为什么密码不能明文存"&gt;一、为什么密码不能明文存？
&lt;/h2&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;❌ 明文存储
┌────────────────────────────────┐
│ 用户名 | 密码 │
│ albert | 123456 │ ← 拖库 = 灾难
│ zhangsan | qwerty │
└────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;一旦数据库泄露（&lt;strong&gt;拖库&lt;/strong&gt;），所有用户密码瞬间暴露。更糟的是用户常在多个网站用同一密码 → 一处泄露，处处沦陷（&lt;strong&gt;撞库攻击&lt;/strong&gt;)。&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;📌 2011 年 CSDN 拖库事件，600 万账号&lt;strong&gt;明文密码&lt;/strong&gt;泄露，引爆中国互联网密码安全意识。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="二第一层防御哈希算法"&gt;二、第一层防御：哈希算法
&lt;/h2&gt;&lt;p&gt;哈希 = &lt;strong&gt;单向&lt;/strong&gt;的数学函数。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt; hash()
&amp;#34;123456&amp;#34; ───────► e10adc3949ba59abbe56e057f20f883e
 （永远是这个值，不可反推）
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="三大特性"&gt;三大特性
&lt;/h3&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;特性&lt;/th&gt;
 &lt;th&gt;含义&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;确定性&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;同样输入 → 同样输出，永远成立&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;不可逆&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;从哈希值反推不出原密码&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;雪崩效应&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;输入变一点点，输出天差地别&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="雪崩效应直观感受"&gt;雪崩效应直观感受
&lt;/h3&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;&amp;#34;123456&amp;#34; ──► e10adc3949ba59abbe56e057f20f883e
&amp;#34;123457&amp;#34; ──► f1887d3f9e6ee7a32fe5e76f4ab80d63
 ▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲
 完全没有规律可言
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="哈希到底怎么算的以-md5-为例"&gt;哈希到底怎么算的？（以 MD5 为例）
&lt;/h3&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;&amp;#34;123456&amp;#34;
 │
 ▼ 编码成二进制
[00110001 00110010 ...]
 │
 ▼ 填充到 512 位倍数
[512 位数据块]
 │
 ▼ 4 个魔法初值
A=0x67452301 B=0xefcdab89 C=0x98badcfe D=0x10325476
 │
 ▼ 64 轮&amp;#34;揉面&amp;#34;：AND / OR / XOR / 左旋 / 加常数
 │ 每一轮：新B = B + 左旋(A + F(B,C,D) + M[i] + K[i], s)
 │
 ▼ 最终拼接 A|B|C|D
e10adc39 49ba59ab be56e057 f20f883e ✅
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;为什么不可逆？&lt;/strong&gt; 因为大量使用了 &lt;code&gt;AND&lt;/code&gt; / &lt;code&gt;OR&lt;/code&gt; 这种&lt;strong&gt;有损运算&lt;/strong&gt;——&lt;code&gt;1 AND 0 = 0&lt;/code&gt;，但反过来你不知道原本是什么。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="三单纯哈希也不够彩虹表攻击"&gt;三、单纯哈希也不够：彩虹表攻击
&lt;/h2&gt;&lt;p&gt;攻击者会&lt;strong&gt;预先&lt;/strong&gt;计算常见密码的哈希，做成超大对照表：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;🌈 彩虹表（攻击者一次性投入几个月算好）
┌──────────────────────────────────────────────┐
│ 123456 → e10adc3949ba59abbe56e057f20f883e│
│ password → 5f4dcc3b5aa765d61d8327deb882cf99│
│ qwerty → d8578edf8458ce06fbc5bb76a58c5ca4│
│ ...（数十亿条） │
└──────────────────────────────────────────────┘

拖库 → 拿哈希 → 查表 → 瞬间还原 1000 万个密码 💀
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;&amp;ldquo;算一次表，破解所有人&amp;rdquo;&lt;/strong&gt;——成本极低。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="四第二层防御加盐salt"&gt;四、第二层防御：加盐（Salt）🧂
&lt;/h2&gt;&lt;p&gt;给每个用户生成&lt;strong&gt;随机字符串&lt;/strong&gt;作为盐，拼到密码后再哈希：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;注册流程
─────────────────────────────────────────────
用户输入: &amp;#34;123456&amp;#34;
随机生成: 盐 = &amp;#34;x7Kp9mQ2&amp;#34;
计算: hash(&amp;#34;123456&amp;#34; + &amp;#34;x7Kp9mQ2&amp;#34;) = a3f5b8c1...
存储:
┌──────────┬────────────┬──────────────┐
│ 用户名 │ 盐 │ 哈希 │
├──────────┼────────────┼──────────────┤
│ albert │ x7Kp9mQ2 │ a3f5b8c1... │
│ zhang │ Lp4nR8wX │ 9d2e7f4a... │ ← 同样密码，盐不同，哈希也完全不同
└──────────┴────────────┴──────────────┘
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="关键认知颠覆-"&gt;关键认知颠覆 ⚠️
&lt;/h3&gt;
 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;盐是公开存储的，不是秘密！&lt;/strong&gt;&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;那加盐有什么用？看对比：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;没加盐 🌈
─────────────
攻击者：算一次彩虹表 → 破解所有用户 ✅
成本：低

加盐后 🧂
─────────────
攻击者：每个用户盐不同
 → 用户1 算一张表（几个月）
 → 用户2 盐不一样，再算一张表（几个月）
 → 1000 万用户 = 1000 万张表 ❌
成本：彩虹表攻击经济上完全不可行
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;盐的作用不是&amp;quot;保密&amp;quot;，而是&amp;quot;让批量破解失去经济意义&amp;quot;。&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="五第三层防御慢哈希算法"&gt;五、第三层防御：慢哈希算法
&lt;/h2&gt;&lt;p&gt;加盐后，攻击者还能针对&lt;strong&gt;单个用户&lt;/strong&gt;暴力破解：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;拿 albert 的盐 + 哈希
 ↓
试遍所有密码组合 → 找到匹配
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;普通 SHA-256 太快——&lt;strong&gt;GPU 一秒能算几十亿次&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;解决方案：&lt;strong&gt;故意把哈希算法设计得很慢&lt;/strong&gt;。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;普通 SHA-256: 每秒 1,000,000,000 次 → 试遍 8 位密码只需几小时
bcrypt (cost=12): 每秒 300 次 → 同样的破解需要几百年
Argon2: 每秒 100 次 → 还要消耗大量内存，GPU 加速无效
&lt;/code&gt;&lt;/pre&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;算法&lt;/th&gt;
 &lt;th&gt;特点&lt;/th&gt;
 &lt;th&gt;推荐度&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;MD5 / SHA-1&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;已破解，禁用&lt;/td&gt;
 &lt;td&gt;❌&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;SHA-256&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;太快，不适合密码&lt;/td&gt;
 &lt;td&gt;❌&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;bcrypt&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;经典，自带盐&lt;/td&gt;
 &lt;td&gt;✅&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;scrypt&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;抗 GPU/ASIC&lt;/td&gt;
 &lt;td&gt;✅&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Argon2&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;2015 密码哈希竞赛冠军&lt;/td&gt;
 &lt;td&gt;⭐ 首选&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;对单次登录用户无感（0.1 秒），对暴力破解者来说成本提高几亿倍。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="六第四层防御pepper胡椒"&gt;六、第四层防御：Pepper（胡椒）🌶️
&lt;/h2&gt;&lt;p&gt;如果想再加一层——&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;Salt（盐）&lt;/th&gt;
 &lt;th&gt;Pepper（胡椒）&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;存哪里&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;数据库，和哈希一起&lt;/td&gt;
 &lt;td&gt;应用代码 / 环境变量 / KMS&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;每用户&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;不同&lt;/td&gt;
 &lt;td&gt;全局共用一个&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;拖库会泄露吗&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;会&lt;/td&gt;
 &lt;td&gt;不会（除非服务器也被入侵）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;hash = Argon2(密码 + 盐 + Pepper)
 ▲
 └── 不进数据库，藏在应用层
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;双层物理隔离&lt;/strong&gt;：要破解必须&lt;strong&gt;同时&lt;/strong&gt;攻破数据库 + 应用服务器。&lt;/p&gt;
&lt;blockquote class="alert alert-tip"&gt;
 &lt;div class="alert-header"&gt;
 &lt;span class="alert-icon"&gt;💡&lt;/span&gt;
 &lt;span class="alert-title"&gt;落到你的真实环境&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="alert-body"&gt;
 &lt;p&gt;Pepper 应该存在哪？参考你已经在用的两台服务器 ——
阿里云服务器代码资产盘点-2026-04-23 与 云服务器代码资产盘点-2026-04-23
推荐做法：写进各服务的 &lt;code&gt;systemd&lt;/code&gt; Environment 文件 / &lt;code&gt;.env&lt;/code&gt; 并 &lt;code&gt;chmod 600&lt;/code&gt;，
&lt;strong&gt;绝不进 Git&lt;/strong&gt;；如果上了阿里云 KMS，就用 KMS 凭据 API 拉取。&lt;/p&gt;
 &lt;/div&gt;
 &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="七完整防御链总览"&gt;七、完整防御链总览
&lt;/h2&gt;&lt;pre tabindex="0"&gt;&lt;code&gt; 密码安全分层防御 🛡️
 ┌─────────────────────────────────────────┐
 │ │
 │ ┌──────────────────────────────────┐ │
 │ │ ❌ 明文 │ │ 拖库 = 死
 │ └──────────────────────────────────┘ │
 │ ⬇ │
 │ ┌──────────────────────────────────┐ │
 │ │ 🔒 哈希 防明文裸奔 │ │ 防彩虹表？❌
 │ └──────────────────────────────────┘ │
 │ ⬇ │
 │ ┌──────────────────────────────────┐ │
 │ │ 🔒 + 🧂 加盐 防彩虹表 │ │ 防暴力？⚠️
 │ └──────────────────────────────────┘ │
 │ ⬇ │
 │ ┌──────────────────────────────────┐ │
 │ │ 🔒 + 🧂 + 🐌 慢算法 防暴力破解 │ │ 防服务器入侵？⚠️
 │ └──────────────────────────────────┘ │
 │ ⬇ │
 │ ┌──────────────────────────────────┐ │
 │ │ 🔒+🧂+🐌+🌶️ Pepper 分层隔离 │ │ ✅ 现代最佳实践
 │ └──────────────────────────────────┘ │
 └─────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="注册流程"&gt;注册流程
&lt;/h3&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;用户密码 ──► 生成随机盐 ──► Argon2(密码 + 盐 + Pepper) ──► 入库
 ┌────────────────┐
 │ 用户 | 盐 | 哈希 │
 └────────────────┘
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="登录流程"&gt;登录流程
&lt;/h3&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;用户输入 ──► 查出该用户的盐 ──► Argon2(密码 + 盐 + Pepper) ──► 比对哈希
 ↓
 相等 → 登录成功
 不等 → 拒绝
&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;
&lt;h2 id="八相关攻击术语"&gt;八、相关攻击术语
&lt;/h2&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;术语&lt;/th&gt;
 &lt;th&gt;含义&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;拖库&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;攻击者把整个数据库下载走&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;洗库&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;在拖到的数据中筛选高价值信息（VIP、管理员等）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;撞库&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;用 A 网站泄露的密码去 B/C/D 网站尝试登录&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;彩虹表&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;预先计算的&amp;quot;密码 → 哈希&amp;quot;对照表&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;碰撞攻击&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;找到两个不同输入产生同一哈希值（MD5 已被攻破）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="九给开发者的实践清单"&gt;九、给开发者的实践清单
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; &lt;strong&gt;永远不要&lt;/strong&gt;自己实现密码哈希算法&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; 使用成熟库：Python &lt;code&gt;passlib&lt;/code&gt; / Node &lt;code&gt;bcrypt&lt;/code&gt; / Rust &lt;code&gt;argon2&lt;/code&gt; crate&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; &lt;strong&gt;首选 Argon2id&lt;/strong&gt;，备选 bcrypt（cost ≥ 12）&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; 盐至少 16 字节，&lt;strong&gt;密码学安全的随机数生成器&lt;/strong&gt;生成（不要用 &lt;code&gt;Math.random()&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Pepper 存在环境变量或 KMS，&lt;strong&gt;永不进代码仓库&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; 配套措施：登录失败次数限制、2FA、异常登录告警&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote class="alert alert-note"&gt;
 &lt;div class="alert-header"&gt;
 &lt;span class="alert-icon"&gt;📝&lt;/span&gt;
 &lt;span class="alert-title"&gt;在你已有项目里落地&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="alert-body"&gt;
 &lt;p&gt;&lt;a class="link" href="https://blog.hialbert.online/post/%e7%bb%99hermes-agent%e8%a3%85%e4%b8%8aopen-webui-%e4%bb%8e%e9%9b%b6%e5%88%b0%e4%b8%80%e7%9a%84%e5%ae%8c%e6%95%b4%e5%ae%9e%e8%b7%b5/" &gt;给Hermes Agent装上Open WebUI：从零到一的完整实践&lt;/a&gt; 中如果开放了用户登录，
建议把默认 Open WebUI 的密码哈希策略升级为 &lt;strong&gt;Argon2id + Pepper&lt;/strong&gt;。
而 &lt;a class="link" href="https://blog.hialbert.online/post/claude-code-vibe-coding-%e5%ba%94%e7%94%a8%e7%9a%84%e6%9e%b6%e6%9e%84%e5%88%86%e6%a1%a3%e6%89%8b%e5%86%8c/" &gt;Claude Code Vibe Coding 应用的架构分档手册&lt;/a&gt; 的 Tier 0 → Tier 1 升级时，
Auth.js / Clerk 默认已用 bcrypt，如果走自管 session 就要手动选算法。&lt;/p&gt;
 &lt;/div&gt;
 &lt;/blockquote&gt;
&lt;h2 id="十给用户的自保清单"&gt;十、给用户的自保清单
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; 不在多个网站用同一密码（用 &lt;strong&gt;Bitwarden / KeePass&lt;/strong&gt; 等密码管理器）&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; 重要账户开启 &lt;strong&gt;2FA / TOTP&lt;/strong&gt;（Google Authenticator、Authy）&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; 定期上 &lt;a class="link" href="https://haveibeenpwned.com" target="_blank" rel="noopener"
 &gt;haveibeenpwned.com&lt;/a&gt; 查邮箱是否在已知泄露库&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; 长密码 &amp;gt; 复杂密码（&lt;code&gt;correct horse battery staple&lt;/code&gt; &amp;gt; &lt;code&gt;P@ssw0rd!&lt;/code&gt;）&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote class="alert alert-tip"&gt;
 &lt;div class="alert-header"&gt;
 &lt;span class="alert-icon"&gt;💡&lt;/span&gt;
 &lt;span class="alert-title"&gt;移动端体验小贴士&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="alert-body"&gt;
 &lt;p&gt;wiki-iphone-pwa-使用指南-2026-05-02 里提到的 PWA 形态，
配合 iOS Keychain / Face ID 可以做到&lt;strong&gt;长密码 + 一键登录&lt;/strong&gt;两不误，
是用户侧自保清单的最佳工程实现。&lt;/p&gt;
 &lt;/div&gt;
 &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="一句话总结"&gt;一句话总结
&lt;/h2&gt;
 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;哈希防明文裸奔，加盐防彩虹表，慢算法防暴力破解，Pepper 防数据库单点失陷。&lt;/strong&gt;
现代密码学不追求&amp;quot;绝对安全&amp;quot;，而是让攻击成本翻几个数量级，最终让攻击者放弃。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="-本仓库相关笔记"&gt;🔗 本仓库相关笔记
&lt;/h2&gt;&lt;h3 id="强相关同一架构链路"&gt;强相关（同一架构链路）
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://blog.hialbert.online/post/claude-code-vibe-coding-%e5%ba%94%e7%94%a8%e7%9a%84%e6%9e%b6%e6%9e%84%e5%88%86%e6%a1%a3%e6%89%8b%e5%86%8c/" &gt;Claude Code Vibe Coding 应用的架构分档手册&lt;/a&gt; —— 鉴权与支付一节的纵向展开&lt;/li&gt;
&lt;li&gt;阿里云服务器代码资产盘点-2026-04-23 —— Pepper / KMS 实际落地的服务器&lt;/li&gt;
&lt;li&gt;云服务器代码资产盘点-2026-04-23 —— 同上，多机部署时同步 Pepper&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="中等相关应用层接入"&gt;中等相关（应用层接入）
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://blog.hialbert.online/post/%e7%bb%99hermes-agent%e8%a3%85%e4%b8%8aopen-webui-%e4%bb%8e%e9%9b%b6%e5%88%b0%e4%b8%80%e7%9a%84%e5%ae%8c%e6%95%b4%e5%ae%9e%e8%b7%b5/" &gt;给Hermes Agent装上Open WebUI：从零到一的完整实践&lt;/a&gt; —— Web 应用用户登录系统&lt;/li&gt;
&lt;li&gt;wiki-iphone-pwa-使用指南-2026-05-02 —— 移动端密码体验与 Face ID&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="知识体系入口"&gt;知识体系入口
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://blog.hialbert.online/post/%e4%bb%8e%e9%9b%b6%e6%90%ad%e5%bb%baobsidian%e5%85%a8%e6%a0%88%e7%9f%a5%e8%af%86%e7%b3%bb%e7%bb%9f/" &gt;从零搭建Obsidian全栈知识系统&lt;/a&gt; —— 这条笔记在领域库的位置&lt;/li&gt;
&lt;li&gt;Obsidian核心用法指南 —— 如何用反向链接组织安全知识&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="占位待补建的笔记"&gt;占位（待补建的笔记）
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;数据库安全&lt;/li&gt;
&lt;li&gt;Web 安全基础&lt;/li&gt;
&lt;li&gt;OWASP Top 10&lt;/li&gt;
&lt;li&gt;2FA 与 TOTP 原理&lt;/li&gt;
&lt;li&gt;KMS 密钥管理服务&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;%% 整理日期: 2026-05-05 · 来源: Downloads/网站密码加盐的原理.md，已嵌入领域库双向链接 %%&lt;/p&gt;</description></item></channel></rss>