密码如何存储?

简介: 本文介绍了密码存储的安全策略及加密算法对比。内容涵盖明文密码风险、彩虹表攻击原理,以及如何通过加盐、迭代哈希提升安全性,推荐使用 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 实现原理类似
相关文章
|
2月前
|
JSON 自然语言处理 算法
大模型应用测试必备技能:问题对生成实践
本文介绍了利用LangChain的QAGenerationChain从文本生成问题-答案对(QA pairs)的方法,旨在解决LLM应用开发中测试数据生成的格式不统一、库版本过时、模型输出异常及代码可维护性差等问题。文中提供了完整的代码实现,并对生成结果进行了有效性评估,包括语义相似度检查、关键词匹配和重复性检测,确保生成的QA对质量可靠,适用于知识库测试与评估。
308 86
|
存储 算法 安全
订单号和 id 列可不可以是同一列?
在分布式场景中,单表已经不能满足我们的需求了,所以用自增 id 的方案也就不合适了。当比如我们进行分表设计时,主键列到底如何生成就成了一个问题,流行的方法是利用像 snowflake 这样的算法计算出一个趋势有序的值作为 id。(当然还有其他多种方法)这样就满足了扩展性和一定程度上解决了检索性能的问题。
订单号和 id 列可不可以是同一列?
|
8月前
|
机器学习/深度学习 数据采集 数据处理
Pipeline基础语法
Pipeline是处理数据流和构建机器学习模型的重要工具,它能够简化代码、提高可读性并减少错误。通过本篇文章,读者应能掌握Pipeline的基本语法、使用方法及其在数据科学中的重要性。正确使用Pipeline将极大地提高机器学习项目的效率与可靠性。希望本文能为您的数据处理工作提供实用的指导和帮助。
923 9
|
9月前
|
Java 应用服务中间件
SpringBoot工程打包部署
SpringBoot工程打包部署简介:SpringBoot项目可通过三种方式运行:可执行Jar包、可执行War包和标准War包。其中,可执行Jar/War包可独立运行,标准War包需部署在Tomcat中。具体步骤包括:1. 修改pom.xml添加构建依赖;2. 执行`mvn clean package`命令打包;3. 运行生成的Jar/War包(如`java -jar xxx.jar`)。对于标准War包,还需修改启动类并配置Tomcat依赖。
441 7
|
9月前
|
存储 人工智能 算法
《构建鸿蒙Next AI轻量化模型评估指标体系:解锁智能新境界》
在鸿蒙Next生态中,构建适合人工智能轻量化模型的评估指标体系至关重要。该体系涵盖准确性(识别和语义理解)、效率(响应时间和处理速度)、资源占用(CPU、内存、存储)、稳定性(崩溃率和容错能力)、可扩展性(模型更新和多设备适配)及安全性(数据隐私和算法公正)。各指标权重需根据应用场景调整,确保模型性能最优,提升用户体验。
258 2
|
11月前
|
SQL 安全 PHP
PHP安全性深度剖析:防范常见漏洞与最佳实践####
本文深入探讨了PHP编程中不可忽视的安全隐患,重点介绍了SQL注入、XSS攻击、CSRF攻击及文件包含漏洞等四大常见安全威胁。通过详尽的案例分析与防御策略阐述,为开发者提供了一套实用的安全编码指南。文章强调,提升代码安全性是保障Web应用稳健运行的关键,鼓励开发者在日常开发中积极践行安全最佳实践。 ####
|
数据库 数据安全/隐私保护
Failed to load resource: the server responded with a status of 404 ()出错的原因是,因为自己调试的时候,设置了与宝塔不一样的数据库
Failed to load resource: the server responded with a status of 404 ()出错的原因是,因为自己调试的时候,设置了与宝塔不一样的数据库
|
安全 Java 开发者
Poll() 和 Remove() 方法之间的区别
【8月更文挑战第22天】
309 1
|
算法 安全 搜索推荐
AES(Advanced Encryption Standard)是一种广泛使用的对称密钥加密算法,由美国国家标准技术研究所(NIST)制定。
AES(Advanced Encryption Standard)是一种广泛使用的对称密钥加密算法,由美国国家标准技术研究所(NIST)制定。
|
机器学习/深度学习 安全 算法
安全多方计算之三:同态加密
安全多方计算之三:同态加密
2359 42