如何检查该字节数组是Base64编码的?
Base64编码串具有长度被4整除,并且由字符A
的 - Z
,a
- z
,0
- 9
,+
,和/
。如果您的字节数组的长度不能被4整除,或者包含映射到这些范围之外的字符的字节,则它不代表Base64编码的字符串;否则,您的字节数组表示有效的Base-64编码字符串。
这只有在字节数组由'String.getBytes(encoding)'生成时才写入?另外,我们不知道使用了哪种编码。所以我会说这不是OP想要的东西 – Andremoniy
@Andremoniy你对'String.getBytes'的假设是正确的,也是对正确编码的假设。我认为OP *想要的*很清楚,但不清楚OP *具有哪些* :-) – dasblinkenlight
Base64不是* single *标准编码。有多种方言(部分兼容)。例如,填充在许多情况下是可选的。也有不止一个可能的字母表:https://en.wikipedia.org/wiki/Base64 – Durandal
您可以使用Apache的Base64.isBase64(byte[])方法:
import org.apache.commons.codec.binary.Base64;
...
boolean isBase64 = Base64.isBase64(bytes);
你知道未编码的byte数组应该包含什么?检查的唯一方法是取消编码,看看你是否回到原来的位置。 –
您无法区分*看起来像Base64的东西,而实际上*就是* Base64的东西。您需要保持跟踪元数据。 – Durandal