Base64加密/解密
问题反馈Base64加密/解密工具用于将二进制数据编码为文本字符串或将Base64编码的文本解码回二进制数据,常用于数据传输和存储。
Base64是一种基于64个可打印字符来表示二进制数据的编码方式。它常用于在需要以文本形式处理二进制数据的场景中,例如在电子邮件的MIME格式中、URL编码、嵌入图片到HTML或CSS中,以及在数据传输和存储过程中。以下是对Base64的详细说明:
### 编码原理
1. **输入数据分割**:将输入的二进制数据按每3字节(24位)一组进行分割。如果数据长度不是3的倍数,则使用0字节填充,使其长度凑满3字节。
2. **位移操作**:每3字节的数据块被分割成4个6位的单元(因为 \(3 \times 8 = 4 \times 6\))。每个6位单元代表一个十进制数,这个数在0到63之间。
3. **映射字符**:使用Base64字符表将每个6位单元映射为一个Base64字符。Base64字符表包含以下64个字符:
- 大写字母:A-Z (0-25)
- 小写字母:a-z (26-51)
- 数字:0-9 (52-61)
- 加号(+):62
- 斜杠(/):63
4. **填充字符**:如果输入数据长度不是3的倍数,则在编码后的Base64字符串末尾使用等号(=)进行填充,使编码后的字符串长度是4的倍数。
### 解码原理
1. **去掉填充字符**:去掉Base64编码字符串末尾的等号(=)填充字符。
2. **字符映射**:将Base64字符串中的每个字符映射回相应的6位二进制数。
3. **组合二进制数据**:将所有6位的二进制数重新组合成8位的字节。每4个Base64字符还原为3个字节的数据块。
4. **还原原始数据**:去掉可能存在的用于凑满3字节的数据填充。
### 特点和应用
- **效率和简洁**:Base64编码后数据长度约为原始数据的4/3,因此虽然数据量增加了,但保持了简洁性和可读性。
- **无特殊字符**:编码后的字符串仅包含字母、数字和少量符号,避免了因特殊字符导致的数据传输问题。
- **应用广泛**:用于邮件传输、数据存储、URL传递参数、嵌入图像到HTML/CSS、Web API中传输数据等。
### 示例
假设我们需要编码字符串“Hello”:
1. **原始数据**:`H` `e` `l` `l` `o`(ASCII码分别为 72, 101, 108, 108, 111)
2. **二进制表示**:`01001000` `01100101` `01101100` `01101100` `01101111`
3. **24位分组**:`01001000 01100101 01101100` `01101100 01101111`
4. **6位分割**:`010010` `000110` `010101` `101100` `011011` `011011` `111100`
5. **映射字符**:`SGVs bG8g`
6. **Base64编码**:`SGVsbG8g`
通过Base64编码后的“Hello”变为“SGVsbG8g”,并在需要时可以反向解码回原始数据。