Advertisement

看了这篇文章你就懂了MD5与Base64

阅读量:

本文介绍了MD5 和 Base64 两种常见的数据处理技术及其应用场景。MD5 是一种广泛使用的密码散列函数,能够生成128位的散列值(16字节),常用于验证数据完整性并防止篡改。然而,由于其存在计算上的弱点(如碰撞漏洞),并不适合用于高安全性的安全认证用途(如数字签名或SSL证书)。Base64 则是一种将二进制数据转换为可打印字符编码的方法,常用于在HTTP环境中传输较长的数据(如文件内容或标识信息)。通过将原始数据转换为可见字符并添加适当的填充字符(如+、/、=),可以确保传输过程中的可靠性和可读性。尽管Base64编码本身并不是加密技术,但其解码过程可以恢复原始二进制数据。总结而言,MD5 更注重于数据验证与安全性分析,而Base64 则主要用于可靠的数据传输与格式化输出。

本篇文章旨在向开发者介绍这两个术语的基本含义及其应用场景。文中将着重阐述它们的基本概念,并简要说明其在实际项目中的使用时机与方式。无需深入讨论具体的编码实现细节。


MD5是什么1

该课程提供了一个称为"MD5信息摘要"的算法(英语:MD5 Message-Digest Algorithm)。其中"Digest"即为该算法的摘要。

一种广泛使用的密码散列函数是RIPEMD-160算法。它能够生成一个128位(即16字节)的散列值(哈希值)。该算法由美国著名密码学家罗纳德·李维斯特于1995年设计并开发。尽管RIPEMD-160在性能上比其前驱者MD4更为出色,在工业界也有着广泛的应用。然而,在经过数轮的安全性测试后,该算法逐渐暴露出难以避免碰撞问题,并因此不适用于那些对安全性要求极高的场合。例如,在公开密钥加密技术如SSL中以及数字签名等应用中就无法得到有效保障。

MD2~MD5的历史见附录1。

算法原理

MD5码采用512位分组来处理输入信息,并将每个这样的大块进一步划分成互不重叠的十六个连续的32位子块。通过一系列计算步骤后, 计算结果由四个连续排列的32位块构成, 将这四个结果依次连接起来将会生成一个完整的、具有唯一性的128散列值。在每次计算过程中都会使用前一轮的结果作为基础, 从而确保整个算法能够稳定可靠地运行。

Base64编码是什么2

最常见的传输8Bit字节码的编码方式之一

通过使用64个标准字符集 来表示二进制数据的方法。
参考RFC2045至RFC2049系列文档即可了解MIME的详细规范。
MIME3:媒体类型(缩写为 MIME)是一种标准,用于描述文档、文件或字节流的性质和格式。

从二进制到字符的过程,用于在HTTP环境下传递较长的标识信息

具有不可读性,需要解码后才能阅读

在编码中base64编码中包含符号(+、/、=),因此在特定应用场景下会有一些变种内容无需详细讨论。
将每个连续三个8位的数据块转化为四个六位的数据块;随后,在每个六位数据块前添加两位零以使其成为八位数据块;这意味着生成的字符串长度约为原始数据长度的三分之一多。
基于使用了基数为64的字符集(从0到63即2^5-1),因此每个字符占用六个二进制位数。

编码规则

①把3个字节变成4个字节。
②每76个字符加一个换行符。
③最后的结束符也要处理。

为什么要用base644

在计算机中任何数据都是按ASCII码存储的,其中ASCII码范围内的128至255之间的数值代表的是不可见控制符.在网络传输过程中,比如在从A点发送到B点的过程中,通常会经过多个中间节点设备,由于不同设备对于字符串操作的方式有所不同,"这些特殊控制符可能会导致操作失误",这种情况会对信息传递的安全性和可靠性造成不利影响."实际上,在许多应用环境中." 对于可识别的人工操作与系统自动操作之间,"对于标准可读文本的支持是一致性的",但对于"特殊控制符"的操作结果存在明显的差异."为了避免因特殊控制符而导致的一致性问题,建议采用标准可读文本作为编码基础

实例:xml格式的文件中如果想嵌入另一个xml文件。直接导入的话会导致标签冲突不容易被解析怎么办?

  1. 将另一个xml文件转换为字节数组并通过URL的方式将其传送到目标位置并用逗号分隔的形式连接起来
  2. 解码为可见字符
    结果:第二种方案更好一些因为第一种方案占用的空间是原来的两倍而第二种方案仅多三分之一空间因此选择第二种方案就是base64编码
    还有其他常见场景包括:
  3. 当服务器向客户端发送二进制数据时采用JSON格式
  4. 当客户端向服务器传输二进制数据时需通过Base64编码将其转化为可解析的形式

MD5与Base64的区别5

MD5:它是一种不可逆的摘要算法,在数据处理领域中被广泛应用于生成固定长度的32位数字摘要。其核心功能是提供一种安全机制来确保数据完整性。具体而言,在构建网络请求时,系统会将请求中的所有参数进行整合并计算其唯一的32位数字标识码;客户端与服务器端则采用一致的方式计算同一份数据的数字标识码值。这种机制能够有效防止因人为或恶意操作导致的数据篡改或修改行为发生。类似地,在文件传输过程中,在下载端通过计算文件的数字签名来验证所接收文件是否与原始来源一致;如果发现标识码存在差异,则表明该文件可能已被篡改过。

基于Base64编码:归类于加密技术的一种可逆算法,在信息处理过程中可以通过对数据进行编码和解码来实现信息的安全传输与存储。开发实践表明,在实际应用中很多企业会选择将图片文件直接编码为Base64字符串形式后再上传至服务器端以减少文件体积和传输时间。对于涉及加密功能模块的系统设计人员而言,在处理敏感信息时通常需要对数据实施Base64编码/解码的操作以确保信息的安全性。

Note 两者均不属于加密算法。采用...后的方式转换对最终结果的影响较小且无法显著提升安全性。经过...处理后的主要目的是为了确保数据传输过程中的安全性和可靠性而非直接用于保护敏感信息本身。

Reference


  1. https://baike.baidu.com/item/MD5/212708 ↩︎

  2. https://baike.baidu.com/item/base64/8545775 ↩︎

  3. https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Basics_of_HTTP/MIME_types ↩︎

  4. https://www.cnblogs.com/straybirds/p/8395041.html ↩︎

  5. https://www.jianshu.com/p/657748dc3c71 ↩︎

全部评论 (0)

还没有任何评论哟~