我放弃 MD5 了:在 MySQL 里用“噪音池”实现比彩虹表还头疼的加密
我放弃 MD5 了在 MySQL 里用“噪音池”实现比彩虹表还头疼的加密文章目录我放弃 MD5 了在 MySQL 里用“噪音池”实现比彩虹表还头疼的加密一、事情是怎么开始的二、先吐槽一下传统的加密方案1. MD5 和它的朋友们2. AES 和它的朋友们3. 我想要什么三、我的核心思路三重任意Three-Any四、一个具体的例子看完你就懂了五、那如果多插几个呢六、这样做有什么好处七、那实现起来有多复杂表结构就两张加密一行 SQL查询密码一行 SQL八、普通程序员 vs 我九、它真的安全吗十、那有没有缺点十一、实际使用体验十二、总结十三、源码地址十四、评论区一、事情是怎么开始的事情是这样的。有一天我在 WPS 里写 JS 宏本来只是想给 Excel 加点“防同事偷看”的小功能。结果写着写着脑子里突然蹦出一个念头“如果加密的时候每次结果都不一样那彩虹表是不是直接就废了”于是我放下 WPS打开 MySQL开始了这场“密码存得像个分布式系统”的折腾之旅。二、先吐槽一下传统的加密方案1. MD5 和它的朋友们MD5 这东西大家都知道。好处是快坏处是彩虹表到处都是碰撞虽然概率低但存在最重要的是同一个密码永远是同一个 MD5这就好比你每次照相都穿同一件衣服、站同一个位置、摆同一个姿势。黑客只要见过你一次下次一眼就能认出你。2. AES 和它的朋友们AES 很安全但要管密钥密钥丢了就凉了太重了我只是想存个密码不是要保护核弹发射井加密结果还是确定性的密钥不变结果不变3. 我想要什么我想要一种不需要密钥每次加密结果都不一样解密简单到离谱彩虹表看了想骂人的加密方式。三、我的核心思路三重任意Three-Any我给这套方案起了个名字叫“Three-Any Cipher”。所谓“三重任意”就是重数名称说明第一重任意位置噪音字符插在原文的哪个位置随机第二重任意数量插 1 个还是 5 个随机第三重任意字符插什么字符从原文没出现过的字符里随机挑说白了就是往原文里随机塞几个“垃圾字符”然后把“垃圾字符”的清单单独存起来。解密的时候把垃圾删掉剩下的就是原文。四、一个具体的例子看完你就懂了假设原文是q23wrr4加密的时候系统随机决定插入 1 个噪音字符插入字符K插在第 6 个字符后面结果变成q23wKrr4然后系统把[K]存进噪音列表。解密的时候q23wKrr4 去掉 K q23wrr4完成。五、那如果多插几个呢同一个原文q23wrr4如果系统这次随机插了 4 个噪音q23wrVrud4噪音列表[V, , d, u]解密的时候q23wrVrud4 去掉 V → q23wrrud4 去掉 → q23wrrud4 去掉 d → q23wrru4 去掉 u → q23wrr4完美还原。六、这样做有什么好处特性效果同一密码每次加密结果不同彩虹表“我存哪个”没有固定公式攻击者“我是谁我在哪”解密就是一个 REPLACE代码简单到令人发指密文不含高危字符SQL 注入“我进不去啊”不存在碰撞两个密码不可能产生同一个密文七、那实现起来有多复杂说出来你可能不信。表结构就两张-- 用户表没有密码字段CREATETABLEusers(uidVARCHAR(64)PRIMARYKEY,usernameVARCHAR(50),nicknameVARCHAR(50),created_atDATETIME);-- 密码碎片表就这两列CREATETABLEpwd_ciphertext(uidVARCHAR(64),ciphertextTEXT,noise_chars JSON);加密一行 SQLCALLsp_encrypt_and_store(uuid_001,admin,nick,q23wrr4);查询密码一行 SQLSELECTfn_decrypt_simple(uuid_001)AS密码;八、普通程序员 vs 我场景普通程序员我存密码INSERT INTO users (password) VALUES (123456)CALL sp_encrypt_and_store(...)查密码SELECT password FROM usersSELECT fn_decrypt_simple(uid)描述架构“我们用了 MD5 加盐”“我们实现了跨单元联合编译的分布式碎片化密码存储协议”简历上写“熟悉数据库操作”“设计并实现基于噪音池的 Three-Any 抗彩虹表加密模型”九、它真的安全吗我们来对比一下攻击方式MD5AESThree-Any彩虹表能攻破常见密码不能但需要密钥不能没有固定映射碰撞攻击存在碰撞极难不存在密钥泄露不涉及全完蛋不需要密钥已知明文攻击能推导规律不能不能同事路过偷看能看到密文能看到密文能看到乱码十、那有没有缺点当然有。这世界上没有完美的方案。缺点说明密文比原文长原文 7 个字符密文可能 11 个需要额外存储噪音列表多一个 JSON 字段目前只支持 ASCII 字符中文还没支持下次升级如果噪音列表丢了密文就永远解不开了但这不就是安全感的代价吗十一、实际使用体验我已经在 MySQL 里跑了一段时间效果如下-- 添加用户CALLsp_encrypt_and_store(uuid_007,user7,nick7,q23wrr4);-- 查看结果SELECT*FROMpwd_ciphertextWHEREuiduuid_007;输出uidciphertextnoise_charsuuid_007q23wKrr4[“K”]-- 解密SELECTfn_decrypt_simple(uuid_007);-- 返回q23wrr4每次加密结果都不同但解密始终正确。十二、总结这套方案的核心理念就一句话“加密的时候随便造解密的时候认真删。”它不追求数学上的绝对安全而是通过“随机性 碎片化存储”来让攻击者根本不知道从哪下手。如果你也觉得传统加密太死板、彩虹表太猖狂、AES 太重、MD5 太老那不妨试试这个方案。十三、源码地址[GitHub 链接]你放上你自己的仓库地址就行十四、评论区如果你觉得这个方案有点意思欢迎在评论区留言讨论。如果你觉得这个方案很蠢也欢迎在评论区骂我。毕竟折腾才是程序员的浪漫。Peace. ✌️

相关新闻

Appshot:从截图到可运行应用的AI工具部署与实战指南

Appshot:从截图到可运行应用的AI工具部署与实战指南

这次我们来看一个能直接把截图变成可运行应用的项目——Appshot。它的核心思路很直接:你截一张现有软件的界面图,它就能分析截图中的UI元素和布局,然后生成一个功能相似、可以独立运行的桌面应用。这听起来有点像“逆向工程”的UI设计&#x…

2026/8/11 6:57:10 阅读更多 →
AI副驾驶如何重构SRE工作流:从告警风暴到智能根因分析

AI副驾驶如何重构SRE工作流:从告警风暴到智能根因分析

1. 从“救火队员”到“副驾驶”:SRE的日常困境与AI的破局点如果你是一名SRE(站点可靠性工程师),或者负责线上系统的稳定性,那么下面这个场景你一定不陌生:凌晨三点,手机铃声像警报一样把你从睡梦…

2026/8/11 6:49:43 阅读更多 →
React Native鸿蒙跨平台开发与图文混排实践

React Native鸿蒙跨平台开发与图文混排实践

1. 项目背景与核心需求在移动应用开发领域,跨平台技术方案一直是开发者关注的焦点。React Native作为Facebook推出的跨平台框架,凭借其"一次编写,多端运行"的特性,已经成为许多团队的首选方案。而鸿蒙系统(H…

2026/8/11 6:43:29 阅读更多 →

最新新闻

fMRI-fNIRS联合成像:实现脑功能的多模态评估(附高分文献下载)

fMRI-fNIRS联合成像:实现脑功能的多模态评估(附高分文献下载)

fMRI-fNIRS联合成像功能磁共振成像(functional magnetic resonance imaging,fMRI)能够以较高空间分辨率观察全脑活动和功能网络,包括丘脑、海马及基底节等深部结构,但对头动较为敏感,时间分辨率受血流动力学…

2026/8/11 20:12:19 阅读更多 →
家装设计工具记录:多款室内 3D 设计工具能力边界整理

家装设计工具记录:多款室内 3D 设计工具能力边界整理

新房装修、旧房改造、门店工装方案制作时,家装设计工具可快速绘制户型、生成全屋软装效果图。不同设计软件在户型建模、AI 搭配、渲染输出、工具联动、施工配套上存在明显差异。下文客观记录多款家装设计工具基础能力与使用局限,本文无任何商业合作&…

2026/8/11 20:12:19 阅读更多 →
从0到1掌握BoAT-Engine:嵌入式区块链客户端开发完全指南

从0到1掌握BoAT-Engine:嵌入式区块链客户端开发完全指南

从0到1掌握BoAT-Engine:嵌入式区块链客户端开发完全指南 【免费下载链接】BoAT-X-Framework BoAT-X Blockchain Application Framework for IoT 项目地址: https://gitcode.com/gh_mirrors/bo/BoAT-X-Framework BoAT-X-Framework是一款专为物联网设备打造的区…

2026/8/11 20:12:19 阅读更多 →
上海地坪施工公司推荐前,别急着问哪家好

上海地坪施工公司推荐前,别急着问哪家好

在面对“上海地坪施工公司哪家好”或者“上海地坪施工公司推荐”这类问题时,很多业主和工程采购方往往下意识地想直接要一个名字。但在工业地坪和商业地坪领域,这种问法其实很容易把项目带偏。地坪工程不是买一件标准化的消费品,即便是同一栋…

2026/8/11 20:12:19 阅读更多 →
SWIFT 0100-A355210 图像处理板组件

SWIFT 0100-A355210 图像处理板组件

SWIFT 0100-A355210 图像处理板组件SWIFT 0100-A355210 是一款图像处理板组件,属于 SWIFT 系列图像采集卡产品线,主要用于工业机器视觉领域,与 SWIFT 系列线扫描相机配套完成图像采集与数据传输任务。SWIFT 0100-A355210 图像处理板组件 产品…

2026/8/11 20:12:19 阅读更多 →
OpenClaw安全实践:从风险识别到防御部署

OpenClaw安全实践:从风险识别到防御部署

1. OpenClaw安全全景透视:从风险识别到安全实践在开源工具生态中,OpenClaw作为新兴的基础架构组件,其安全特性正受到越来越多开发团队的关注。最近三个月内,关于OpenClaw的安全讨论量激增237%,主要集中在部署配置、边界…

2026/8/11 20:11:19 阅读更多 →

日新闻

如何用Video2X实现专业级视频画质提升:AI视频增强完整指南

如何用Video2X实现专业级视频画质提升:AI视频增强完整指南

如何用Video2X实现专业级视频画质提升:AI视频增强完整指南 【免费下载链接】video2x A machine learning-based video super resolution and frame interpolation framework. Est. Hack the Valley II, 2018. 项目地址: https://gitcode.com/GitHub_Trending/vi/v…

2026/8/11 0:00:02 阅读更多 →
前后端分离项目中控制台与接口工具数据差异排查指南

前后端分离项目中控制台与接口工具数据差异排查指南

1. 问题现象解析:控制台与Apifox的数据差异 最近在调试一个前后端分离项目时,遇到了一个典型问题:后端服务在本地开发环境控制台能正常输出查询数据,但通过Apifox测试时却返回空结果。这种"控制台有数据,接口工具…

2026/8/11 0:00:03 阅读更多 →
AI编程实战:从Claude Code踩坑到游戏开发入门

AI编程实战:从Claude Code踩坑到游戏开发入门

1. 从“AI能帮我做游戏”到“AI让我重新学编程”最近身边不少朋友,尤其是一些非技术背景、但对游戏开发有浓厚兴趣的朋友,都在问我同一个问题:“听说现在用Claude Code这种AI编程工具,小白也能做游戏了,是真的吗&#…

2026/8/11 0:00:03 阅读更多 →

周新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码(维护中 rm repo) 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/11 1:08:05 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/11 1:08:05 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身,而应重视模型外的系统搭建,即Harness。提出AgentModelHarness的实用公式,详细介绍Harness的四个层次:持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/11 1:08:05 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/11 17:09:45 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/11 1:08:06 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/11 17:09:45 阅读更多 →