密码如何存储?

简介: 本文介绍了密码存储的安全策略及加密算法对比。内容涵盖明文密码风险、彩虹表攻击原理,以及如何通过加盐、迭代哈希提升安全性,推荐使用 BCrypt 算法。同时比较了 DES、AES、SM4 对称加密算法,和 RSA、ECDSA、SM2 非对称加密算法的特性与应用场景。
  • 首先,明文肯定是不行的
  • 第二,单纯使用 MD5、SHA-2 将密码摘要后存储也不行,简单密码很容易被彩虹表攻击,例如
  • 攻击者可以把常用密码和它们的 MD5 摘要结果放在被称作【彩虹表】的表里,反查就能查到原始密码

加密结果

原始密码

e10adc3949ba59abbe56e057f20f883e

123456

e80b5017098950fc58aad83c8c14978e

abcdef

...

...

因此

  • 要么提示用户输入足够强度的密码,增加破解难度
  • 要么我们帮用户增加密码的复杂度,增加破解难度
  • 可以在用户简单密码基础上加上一段盐值,让密码变得复杂
  • 可以进行多次迭代哈希摘要运算,而不是一次摘要运算
  • 还有一种办法就是用 BCrypt,它不仅采用了多次迭代和加盐,还可以控制成本因子来增加哈希运算量,让攻击者知难而退


1.5【追问】比较一下 DES、AES、SM4

它们都是对称加密算法

  • DES(数据加密标准)使用56位密钥,已经不推荐使用
  • AES(高级加密标准)支持 128、192、256位密钥长度,在全球范围内广泛使用
  • SM4(国家商用密码算法)支持 128位密钥,在中国范围内使用


1.6【追问】比较一下 RSA、ECDSA 和 SM2

它们都是非对称加密算法

  • RSA 的密钥长度通常为 1024~4096,而 SM2 的密钥长度是 256
  • SM2 密钥长度不需要那么长,是因为它底层依赖的是椭圆曲线、离散对数,反过来 RSA 底层依赖的是大数分解,前者在相同安全级别下有更快的运算效率
  • SM2 是中国国家密码算法,在国内受政策支持和推广
  • ECDSA 与 SM2 实现原理类似
相关文章
|
JSON 算法 Java
常见登录密码加密方式
常见登录密码加密方式
2656 0
|
3月前
|
弹性计算 监控 大数据
阿里云国外地域云服务器收费标准、购买流程与选择和使用注意事项参考
阿里云国外云服务器是外贸企业的理想选择,覆盖亚太、欧洲、美洲、中东等多个地区,确保业务快速响应。提供按量、按月、包年等多样计费方式,满足不同需求。其优势在于全球覆盖、灵活计费、高性能计算及稳定网络,适合外贸企业、免备案应用、大数据处理、游戏娱乐等多种场景。阿里云提供高数据可靠性保障,结合促销活动、优惠券和续费同价政策,助力用户低成本高效运营。
1249 8
|
安全 物联网 网络安全
公网IP证书怎么申请?
在数字化时代,互联网通信的安全性日益重要。公网IP证书(IP SSL证书)通过加密技术保护数据传输,确保数据的保密性、完整性和身份验证。适用于物联网设备、API接口和远程服务器等场景,提升用户信任度和合规性。申请流程包括确认IP地址、选择服务商、生成CSR和私钥、提交申请并验证、接收安装证书及测试优化。
公网IP证书怎么申请?
|
6月前
|
JavaScript 前端开发 Java
基于springboot的高校健身场地预约系统
针对高校健身场地管理效率低、资源分配不均等问题,本文设计并实现了一套基于SpringBoot框架的在线预约系统。系统采用Vue前端与MySQL数据库,实现场地查询、预约、管理等功能,提升学生使用体验与场地利用率,推动校园体育智能化发展。
|
机器学习/深度学习 人工智能 搜索推荐
《探秘AI驱动的个性化推荐系统:精准触达用户的科技密码》
在这个信息爆炸的时代,AI驱动的个性化推荐系统应运而生,通过数据收集与处理、构建用户画像、核心算法(协同过滤与基于内容的推荐)及深度学习技术,精准洞察用户需求。它广泛应用于电商、视频平台等领域,提升用户体验和商业效益。尽管面临数据稀疏性、隐私保护等挑战,未来将更加精准、实时并注重用户隐私。
1641 1
《探秘AI驱动的个性化推荐系统:精准触达用户的科技密码》
|
10月前
|
SQL JSON 前端开发
较为完整的SpringBoot项目结构
本文介绍了SpringBoot项目的分层结构与目录组成。项目分为四层:**controller层**(前端交互)、**service层**(业务逻辑处理)、**dao层**(数据库操作)和**model层**(实体类定义)。分层设计旨在实现关注点分离,降低耦合度,提高系统灵活性、可维护性和扩展性。此外,还详细说明了项目目录结构,包括`controller`、`service`、`dao`、`entity`、`param`、`util`等子目录的功能划分,便于团队协作开发。此架构有助于前后端分离,明确各模块职责,符合高内聚低耦合的设计原则。
6471 1
|
JSON 开发框架 网络安全
[网络安全] Dirsearch 工具的安装、使用详细教程
[网络安全] Dirsearch 工具的安装、使用详细教程
10662 0
|
监控 Java 测试技术
代码更新不停机:Spring Boot应用实现零停机更新的新质生产力
【8月更文挑战第14天】在快节奏的软件开发与运维环境中,应用的持续部署与更新成为了提升竞争力的关键。传统的停机更新方式不仅影响用户体验,还可能造成业务中断和数据丢失。因此,实现Spring Boot应用的零停机更新成为了现代软件开发团队追求的目标。本文将深入探讨如何通过一系列技术和策略,在不影响服务可用性的前提下,实现Spring Boot应用的平滑升级。
1530 2
|
算法 数据安全/隐私保护
bcrypt加密
bcrypt加密
560 0