扫码阅读
手机扫码阅读
系统设计 | 编码、散列和加密
164 2024-08-27
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
查看原文:系统设计 | 编码、散列和加密
文章来源:
TechLead 少个分号
扫码关注公众号
摘要
本文详细解析了编码、散列和加密三种数据处理方式的概念、异同和使用场景。说明了许多安全事件是由于人们对这些概念理解不足造成的,如错误地将Base64作为加密方法。强调只有加密能真正保护数据安全,而散列用于识别身份,编码几乎不提供安全保护。
1. 编码、散列和加密的异同
编码是转换数据格式以适应不同系统和平台的过程,可逆转。散列是将源数据转换为固定长度的不可逆转的字母编码,用于数据完整性校验。加密是将数据转换为无法识别的密文以保护安全,现代加密依赖于密钥的机密性。
2. 数据编码
常见数据编码包括Base系列编码、URL编码、HTML实体编码、HEX二进制编码和Unicode编码等,各自用于不同的应用场景,例如HTTP认证和URL传输。
3. 散列
散列算法将数据转换为固定长度的唯一标识符,但可能发生碰撞。除了常见的MD5和SHA1散列算法,还介绍了Bcrypt和国密SM3 SM4散列算法。散列算法用于信息安全但不可逆,且在密码保护方面存在限制。
4. 加密
加密可以分为古典和现代密码学,现代算法如DES、AES和RSA基于数学原理,以密钥的机密性保护信息。在系统设计中,应在适当场景使用合适的加密算法。
想要了解更多内容?
查看原文:系统设计 | 编码、散列和加密
文章来源:
TechLead 少个分号
扫码关注公众号
TechLead 少个分号的其他文章
建模方法元模型:如何设计一个建模方法
Eric DDD 中阐述了领域驱动设计的重要意义和一些基本实践,但是并没有给出一套具体的建模过程方法。本文会和大家一起探讨常用软件建模过程方法的基本逻辑,以及如何设计一套简单的建模过程。
系统设计 | 如何表达迭代技术方案?(战术篇)
本文整理了一些日常项目上进入迭代前的技术方案输出物。
技术管理 | 开始谈谈技术管理 (话题征集)
技术管理相关话题征集。
主客体命名法
命名也是设计的一部分。使用主客体命名法,不仅可以写出主谓宾结构的语句,还能通过命名改善软件设计。
系统设计 | "胖瘦" BFF:常见的两种微服务形态
了解\x26quot;胖瘦\x26quot; BFF微服务架构的两种形态,它们的优缺点以及如何选择最适合的方案。
加入社区微信群
与行业大咖零距离交流学习
软件研发质量管理体系建设
白皮书上线