Base64编码允许的字符

46

我正在使用Java中的Base64编码来编码用户ID字段。

String abc = new String(Base64.encodeBase64("Actualuseridfield"));

我想知道上面的字符串abc是否包含字符 " , : ?

当Base64编码的字符串以abc返回时,它是否会包含以下字符?

" <double quote> 
, <comma> 
: <colon>

16
Base64不是加密方式。它是一种编码二进制数据的方法,使其可以使用可打印字符来表示。它很容易被反转。如果你期望数据是安全的,那么你会失望的。 - Jim Garrison
2
我不会说在base64编码中你找不到逗号(一般情况下) 也许对于你的情况,那个库不会使用任何其他变体,但是根据https://en.wikipedia.org/wiki/Base64#Variants_summary_table,你可以找到包含逗号的base64变体。 “用于IMAP邮箱名称的修改Base64编码(RFC 3501)” - arhak
3个回答

51

Base64编码的字符串中,您将不会看到任何逗号、冒号或双引号。您会看到等号,因为它们用于填充结尾内容。


2
等号“=”不总是存在。 - Lukas Liesis
2
如果结果的长度不完全与最终块的长度匹配,那么填充=将存在。块的长度为24位 - 因此通常会看到0-3个填充。 - iJungleBoy
好奇单引号是否会出现? - Shrihari

29
如果您拥有适当的Base64编码器,除以下特殊字符外,您不会看到其他字符:

[A-Z][a-z][0-9][+/],以及填充字符“ =”,用于指示零填充字节数

还有另一种Base64字符集可用,它将[+/] 替换为 [_-],以使编码URL安全。

然而规范允许包含任何其他字符。通常,Base64编码数据在每76个字符处包含一个换行符“\n”。除上述提到的字符外,解码过程中必须删除任何其他字符。填充字符指示附加到应用于n*4输出字符的零字节数量。


5

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接