系统设计 | 编码、散列和加密
版权声明
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
TechLead 少个分号
扫码关注公众号
扫码阅读
手机扫码阅读
摘要
本文详细解析了编码、散列和加密三种数据处理方式的概念、异同和使用场景。说明了许多安全事件是由于人们对这些概念理解不足造成的,如错误地将Base64作为加密方法。强调只有加密能真正保护数据安全,而散列用于识别身份,编码几乎不提供安全保护。
1. 编码、散列和加密的异同
编码是转换数据格式以适应不同系统和平台的过程,可逆转。散列是将源数据转换为固定长度的不可逆转的字母编码,用于数据完整性校验。加密是将数据转换为无法识别的密文以保护安全,现代加密依赖于密钥的机密性。
2. 数据编码
常见数据编码包括Base系列编码、URL编码、HTML实体编码、HEX二进制编码和Unicode编码等,各自用于不同的应用场景,例如HTTP认证和URL传输。
3. 散列
散列算法将数据转换为固定长度的唯一标识符,但可能发生碰撞。除了常见的MD5和SHA1散列算法,还介绍了Bcrypt和国密SM3 SM4散列算法。散列算法用于信息安全但不可逆,且在密码保护方面存在限制。
4. 加密
加密可以分为古典和现代密码学,现代算法如DES、AES和RSA基于数学原理,以密钥的机密性保护信息。在系统设计中,应在适当场景使用合适的加密算法。
TechLead 少个分号
TechLead 少个分号
扫码关注公众号
还在用多套工具管项目?
一个平台搞定产品、项目、质量与效能,告别整合之苦,实现全流程闭环。
查看方案
TechLead 少个分号的其他文章
专注编码,一次只做一件事
如果专注做一件事情,很容易进入一种类似禅定的忘我状态,这种状态被有些人叫做 “心流”。进入这种状态,可以获得极大的效率。\x0a\x0a这种状态不仅可以获得较高生产力,还可以让内心充盈、满足的愉悦感。
面向对象中的主体客体思维
面向对象是应用软件设计比较好的方式,可以指导用计算机解决现实中的业务问题,因此是软件开发中的一种主流方式。主体、客体思维可以帮助我们理解面向对象。
使用 ArchUnit 守护分层架构
ArchUnit 是一个小型、简单、可扩展的开源 Java 测试库,用于验证预定义的应用程序体系结构和约束。
企业架构建模的挑战和机遇
企业架构关注业务的结构和行为,尤其是创建和使用业务数据的业务角色和流程。它已被定义为 “用于进行企业分析、设计、规划的体系方法,具有定义明确、长期主义、综合应用的特点,用于制定和执行企业战略。
技术管理 | Scrum 是人性的游戏
在长期工作中,我们不得不顺应人性制定规则。即使短期内,可以克服人性的弱点,长期来看,人性的效应会慢慢被放大。
加入社区微信群
与行业大咖零距离交流学习
PMO实践白皮书
白皮书上线
白皮书上线