注册加解密流程梳理

大家好,我是欧达克。

不知道大家工作中是否有参与过注册登录流程,你们公司的注册登录都是怎么做的呢?最近在梳理注册登录流程,发现注册登录时对密码的加解密挺有讲究的,都知道密码不能明文传输,注册时前端加密,服务端解密,流程能说个一二,但是整体怎么做似乎又说不上来。我们将从最简单的加密流程一直升级到复杂系统,看看都是怎么做的。

明文传输

对你们听错,很多早期的论坛、小网站直接明文存储密码,或简单 Base64 编码,相当于裸奔!

前端单向哈希

前端使用 MD5、SHA256 等哈希算法,将密码加密后传给服务端。虽然避免了明文传输和存储,但是都容易被彩虹表暴力破解,也无法防止重放攻击,同时哈希也降低了密码的熵。

加盐哈希

为每个用户分配一个盐值,服务端存储盐值+哈希值。能够防御彩虹表攻击,但是弱密码可以被暴力破解,同时传输层未加密,盐值也可能被截获。从技术实现的角度,前端在加密前,必须获取对应的盐值,服务端也必须为每个用户存储单独的盐值,提高了系统设计复杂度。

传输层加密+慢哈希算法

使用 HTTPS 加密传输,防窃听、防篡改、身份验证,不再担心前后端数据传输过程中的安全性。同时慢哈希算法(如 bcrypt、PBKDF2)也使得暴力破解的成本更高,从实现上不需要我们单独存储盐值,算法直接将盐值保存在密文中。

非对称加密

前端使用 HTTPS + 公钥加密双重保护,服务端先通过密钥管理服务获取私钥,确定是通过公钥加密后的密文,再通过慢哈希算法加密,保存到数据库中,这种方式已经足够安全可靠了。

但是对于一些特别的行业,是不允许服务端拿到明文密码的,比如我前司是做钱包相关业务的,明确规定,服务端任何情况下,不管是内存还是数据库(这里更不用说日志了),都不能出现明文密码。所以在该方案的基础上做了升级,前端在使用公钥加密前,先对明文密码哈希加密,其他流程保持不变。

总结

现在的认证已经越来越去密码化了,很多都采用生物识别➕硬件保护的方式。密码安全是攻防对抗和技术迭代的持续过程,所有方案都需平衡安全性、用户体验与合规要求。我个人的自建小网站,也是采用的前端公钥加密,服务端私钥解密+慢哈希存储的方式,整体方案和前司没什么区别(前司因为合规加了哈希),无非就是在一些认证方式、风控识别、密钥管理工具(AWS KMS)等方面的差异。

相关推荐
橙子家7 小时前
浏览器缓存之【身份与会话管理】:Cookies 和 Private state tokens
前端
最新资讯动态8 小时前
HDC 2026 | 对话鲸鸿动能:存量时代,品牌如何夺回营销“主动权”?
前端
最新资讯动态8 小时前
游戏出海,从产品走向体系
前端
最新资讯动态8 小时前
20人团队跑出百万DAU、大厂也来抢量:谁在鸿蒙生态跑出加速度
前端
最新资讯动态8 小时前
千万开发者背后,鸿蒙商业化的B面
前端
爱勇宝10 小时前
AI 时代:智商决定起点,情商决定走多远
前端·ai编程
kyriewen10 小时前
用了半年 Claude Code 后,我尝试关掉它写了一周代码——结果比想象中严重
前端·javascript·ai编程
IT_陈寒11 小时前
Vite的静态资源打包让我熬夜到三点,这坑千万别跳
前端·人工智能·后端
徐小夕12 小时前
万字拆解 JitWord:企业级实时协同文档底层架构 + 大模型 AI 融合完整实践
前端·vue.js·github
一份执念12 小时前
uni-app 小程序分包限制处理与主包体积优化实战
前端·微信小程序