
上QQ阅读APP看书,第一时间看更新
1.9
Base64编码
Base64编码仅用一个可打印的ASCII字符就可以安全转换任何二进制数据。它常用于对电子邮件附件进行编码,使其通过SMTP安全传输。它还可以用于在基本HTTP验证机制中对用户证书进行编码。
Base64编码将输入数据转换成3个字节块。每个字节块被划分为4段,每段6个数据位。这6个数据位有64种不同的排列组合。因此每个段可以使用一组64个字符表示。Base64编码使用以下字符集中只包含可打印的ASCII字符:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuv wxyz0123456789-/。如果最后的输入数据块不能构成3段输出数据,就用一个或两个等号(=)补足输出。
例如,The Web Application Hacker's Hand book的Base64编码为:
VGh1IFdlYiBBcHBsaWNhdGlvbiBIYWNrZXIncyBIYW5kYm9vaw==.
许多Web应用程序利用Base64编码在Cookie与其他参数中传送二进制数据,甚至用它打乱敏感数据以防止哪怕是细微的修改。大家应该经常留意并解码发送到客户端的任何Base64数据。由于这些数据使用特殊的字符集,而且有时会在字符串末尾添加补足字符(=),因此可以轻易辨别出Base64编码的字符串。例如,编码前我们选择当前网址,如图1.19所示。

图1.19 选择编码的网址
编码以后,可以发现出现一段编码,结尾是两个等号,如图1.20所示。现在在CTF当中,一般利用Base64编码加密的居多。

图1.20 Base64编码