我不理解Base64加密。
如果有人可以解密Base64字符串,它的用途是什么?
为什么它被用于HTTP基本认证?
这就像告诉别人我的密码被反转为OLLEH。
看到OLLEH的人会知道原始密码是HELLO。
我不理解Base64加密。
如果有人可以解密Base64字符串,它的用途是什么?
为什么它被用于HTTP基本认证?
这就像告诉别人我的密码被反转为OLLEH。
看到OLLEH的人会知道原始密码是HELLO。
Base64不是加密,而是一种编码方式。它是一种使用可打印字符(文本)来表示二进制数据的方法。
参见HTTP基本认证维基百科页面的以下段落:
使用Base64算法对用户名和密码进行编码通常使它们难以被肉眼读取,但与编码一样,解码也同样容易。安全不是编码步骤的目的。相反,编码的目的是将可能存在于用户名或密码中的非HTTP兼容字符编码为HTTP兼容字符。
通常称为base64编码,而不是加密! base64编码的好处在于,它允许您只使用可用字符的有限公共子集来表示(二进制)数据,比如仅写一个ASCII码串的1和0更有效率。
x2
倍的字节量,而1和0则会增加x8
倍的字节量。(Base64使数据比原始字节数多出x1.3
)。因此,有时将二进制流编码为十六进制字符串并将字节量翻倍是可以接受的,例如仅将密码哈希存储在数据库中。 - Agnius VasiliauskasBase-64编码是MIME规范的一部分。它提供了一种传输安全的编码方式,用于在数据通过使用与原始客户端不同的编码方案的主机中继时,防止数据损坏或混乱。
互联网上存在许多不同的主机,你不能假定除7位ASCII外还支持其他任何编码方式,否则会有数据丢失/混淆的风险。
例如,IBM大型机使用一种名为EBCDIC(有许多不同的版本)的编码方式。它的代码点与基于ASCII的计算机完全不同--在ASCII中,字母A-Z是0x41 - 0x5A; 在EBCDIC中,字母A - Z甚至不是连续的范围:字母A-I位于0xC1 - 0xC9,字母J-R位于0xD1 - 0xD9,字母S-Z位于0xE2 - 0xE9。
默认情况下,超文本传输协议(HTTP)消息中的消息头字段参数不能包含ISO-8859-1字符集之外的字符。
如果用户名和密码包含不兼容的字符集,则HTTP将无法传输这些文本。为了防止这种情况发生,我们使用Base64编码对用户名和密码进行编码,以确保我们通过HTTP发送的是兼容HTTP的字符。更多信息请参见基本访问身份验证。