我听过人们零散地谈论"base 64编码"。它通常用于什么?
它用于将任意二进制数据转换为ASCII文本。
例如,电子邮件附件就是以这种方式发送的。
Base64编码会使用33%以上的存储空间
存储在数据库中的字符串将无法被人类读取(您可以将其作为一种特性出售,即数据库字符串使用基本形式的加密)。
utf8
类型仍然只有三个字节;如果你想要真正的东西,请使用utf8mb4
。这是一个不错的技巧,但现在已经不再必要了。 - TRiG我在实际应用中使用它来通过Web服务传输大型二进制对象(图像)。因此,在使用Python脚本测试C# Web服务时,可以通过一些小技巧重新创建二进制对象。
[在Python中]
import base64
imageAsBytes = base64.b64decode( dataFromWS )
大多数情况下,我看到它被用于在只能处理ASCII或简单字符集的上下文中编码二进制数据。
稍微详细解释一下Brad的意思:许多电子邮件、Usenet和其他数据传输方式的传输机制并不是“8位清洁的”,这意味着标准ASCII字符集之外的字符在传输过程中可能会被破坏 - 例如,0x0D可能被视为回车符,并被转换为回车符和换行符。Base64将所有二进制字符映射到几个标准的ASCII字母、数字和标点符号中,以避免这种情况。
一个十六进制数字是一个半字节(4位)。两个半字节组成8位,也称为1字节。
MD5生成128位输出,用32个十六进制数字表示,这又是32 * 4 = 128位。128位等于16字节(因为1字节等于8位)。
每个Base64字符编码6位(除了最后一个非填充字符可以编码2、4或6位以及最后的填充字符(如果有))。因此,对于每个Base64编码,128位哈希需要至少⌈128/6⌉= 22个字符,加上填充字符(如果有)。
使用base64,我们可以生成所需长度的编码输出(6、8或10)。如果我们选择决定8个字符的输出,它只占用8个字节,而128位哈希输出占用16个字节。
因此,除了安全性外,base64编码还用于减少所消耗的空间。
Base64 可以用于许多目的。
主要原因是将二进制数据转换为可传递的内容。
我有时使用它来在不同网站之间传递 JSON 数据,在 cookie 中存储有关用户的信息。
注意: 您“可以”将其用于加密 - 我不明白为什么人们说您不能,而且这不是加密,尽管它很容易被破解并且不受欢迎。加密只意味着将一串数据转换为另一串可以稍后解密或不解密的数据,这就是 base64 所做的事情。