`

【基础】BASE64小知识

 
阅读更多

总是听到BASE64,其实对它并不了解。此文记录一些BASE64的基本概念。

 

1. BASE64是加密?

不,虽然有"加密"后不是明文,但逆编码的规则明确,所以“防君子不防小人”,只是没办法一眼看出内容罢了。它是一种"编码"。

 

2. BASE64的大概算法: 

把3个8位字节(3*8=24)转化为4个6位的字节(4*6=24),之后在6位的前面补两个0,形成8位一个字节的形式。——所以编码后大概会多出1/3的长度

 

3. BASE64编码没有安全的加密效果,发明这个编码来使消息长度多出1/3,这不是画蛇添足么?

不是的。这得看BASE64的来源。在Email的传送过程中,由于历史原因,Email只被允许传送ASCII字符,即一个8位字节的低7位。因此,如果您发送了一封带有非ASCII字符(即字节的最高位是1)的Email通过有“历史问题”的网关时就可能会出现问题。网关可能会把最高位置为0!那邮件内容不就变了。结合BASE64的算法,就可以看出BASE64绕过了最高位变成0的问题。

 

4.传说中比JDK原生BASE64算法实现要好的开源JAVA实现(好绕口):

http://migbase64.sourceforge.net/

 

5.相关资料:

http://www.5dmail.net/html/2004-1-30/200413084348.htm   上面的内容就是从里面摘录出来的

http://zttcn.iteye.com/blog/153766   上面第3点提到的非ASCII字符有8位的问题,这篇文章里列举了具体的各种字符集的位数,比如咱常见的ISO-8859-1字符集,就是8位的咯

 

0
1
分享到:
评论

相关推荐

    VB JPG转base64和base64转JPG.rar

    通过学习和理解这些代码,开发者不仅可以掌握Base64编码的基础知识,还能了解到VB6.0处理文件和字符串的方法,这对于进行类似的数据传输和存储工作大有裨益。 总之,Base64编码是IT行业中一个重要的概念,尤其在...

    Delphi版的Base64互相转换函数

    Base64是一种网络上常见的数据编码方式,它将任意二进制数据转化为可打印的ASCII字符,以便在电子邮件、文本协议...了解这些基础知识,开发者就能在Delphi项目中有效地处理Base64编码和解码任务,满足不同场景的需求。

    BASE64编码转换工具

    总的来说,理解并熟练运用BASE64编码和十六进制转换对于从事IT工作的人来说至关重要,无论是数据的传输、存储还是加密解密,这些基础知识都发挥着基础性的作用。"编码转换工具"则提供了一个便捷的平台,帮助用户在...

    C# 文件转换base64

    下面我们将详细探讨C#中如何实现文件到Base64的转换,以及这个过程涉及的相关知识点。 首先,我们需要理解Base64编码的基本原理。Base64编码将每3个字节的二进制数据转换为4个字符的ASCII字符串,每个字符对应一个...

    Base64_javascript_base64_

    在JavaScript中,Base64编码和解码是前端开发中的基础技能。虽然原生API提供了基本功能,但在处理特定场景如URL安全或非ASCII字符时,使用第三方库如`Base64.js`会更灵活和强大。了解这些知识能帮助开发者更好地应对...

    HexString和Base64String的相互转换

    理解它们的特性和转换方法对于开发人员来说是非常基础且实用的知识。 首先,`HexString`(十六进制字符串)是一种将二进制数据表示为十六进制数字的字符串形式。每个字节由两个十六进制字符表示,因此一个32位的二...

    C语言实现base64

    Base64编码是将每3个字节(24位)的数据分成4组,每组6位,然后将这6位数据映射到64个字符之一,这些字符包括大小写字母、数字和两个特殊字符('+', '/')。最后,如果原始数据不是3的倍数,会在末尾加上0位来补足,用...

    base64_linux_C

    通过学习如何在Linux环境下使用C语言实现Base64编码和解码,开发者不仅可以深化对C语言编程的理解,还能掌握网络通信、数据编码和系统级编程的基础知识,这对任何IT专业人员来说都是非常有价值的技能。

    jquery.base64.js jquery-1.12.4.min.js

    本话题将详细讨论两个特定的文件:`jquery-1.12.4.min.js` 和 `jquery.base64.js`,以及它们在Web开发中的作用和相关知识点。 首先,`jquery-1.12.4.min.js` 是jQuery框架的一个版本,它是一个广泛使用的JavaScript...

    易语言 base64编码 源码

    总的来说,易语言Base64编码源码涉及的知识点包括:易语言基础语法、数据类型(如字节集、整数和字符串)、位运算、字符串操作、数据编码理论(如Base64编码)以及自定义函数的编写。对于初学者来说,这是一个很好的...

    base64加密修改.zip

    通过研究这些脚本,开发者不仅可以学习到Base64编码的基础知识,还可以了解到如何在实际项目中优化和调整编码算法,以满足特定的需求。对于任何涉及数据编码、传输或存储的IT从业者来说,这些知识都是非常宝贵的。

    base64的c语言源代码

    通过阅读这两份文件,你可以深入了解C语言如何实现Base64算法,包括内存管理、字符串操作以及循环处理等基础知识。 这个源代码示例对于理解Base64工作原理和学习C语言编程都十分有价值。你可以学习到如何用C语言...

    易语言API实现BASE64编码

    易语言是一种基于中文编程的程序设计语言,它旨在降低编程技术门槛,让更多人能够进行软件开发。...通过这样的实践,开发者不仅可以学习到易语言的基础知识,还能深入理解数据编码原理和API调用技巧。

    Base64加密算法的C实现

    Base64是一种网络上常用的编码方式,主要用于将二进制数据转换为可打印的ASCII...总之,Base64加密算法的C语言实现涉及对二进制数据的处理、位运算以及字符串编码,理解这些基础知识对于实现和理解Base64编码至关重要。

    图片转-base64-上传示例-3个示例演示.rar

    1. **Base64编码原理**:Base64编码是一种基于64个字符的编码方式,这些字符包括大小写字母、数字和两个特殊字符('+', '/'),以及一个等于号'='。Base64编码将每3个字节的二进制数据转换为4个Base64字符,如果原始...

    c语言实现base64编码

    - Base64编码基于64个可打印的ASCII字符,包括大小写字母、数字和两个特殊字符`+`和`/`,以及一个用于填充的字符`=`。 - 每3个字节(24位)的二进制数据被分为4组,每组6位,然后将这6位转化为对应的Base64字符。...

    Java Base64文件加密解密类.rar

    4. **安全性**:除了基础的Base64编码和解码,这个类可能还提供了一些安全特性,比如使用安全的随机数生成器来填充额外的字节,以增加加密的安全性,或者提供了对文件内容进行其他形式的加密,如AES、DES等。...

    stm32从SD卡中读取图片进行base64编码.zip

    在本项目中,我们利用STM32F103ZET6型号的微控制器从SD卡读取图片,然后对图片数据进行Base64编码,并通过串口将编码后的数据发送出去。这一过程涉及到了几个关键的技术点,下面将详细阐述。 首先,我们需要理解STM...

    Javascript 实现Base64 + GZIP + AES 加解密

    首先,让我们了解这三项技术的基础知识: 1. **Base64编码**:Base64是一种用于将二进制数据转换为可打印ASCII字符的编码方式,以便在电子邮件等文本环境中传输。它通过将每3个字节表示为4个字符,确保数据的安全...

    Base64解析转换工具(双向)

    Base64是一种编码机制,常用于在网络上传输和存储包含非ASCII字符的数据,如文本、图像和其他二进制文件。...在日常工作中,掌握Base64的基础知识和如何使用这样的工具,对IT专业人士来说是非常有益的。

Global site tag (gtag.js) - Google Analytics