2017-02-14 82 views
1

如何檢查該字節數組是Base64編碼的?如何檢查該字節數組是Base64編碼的?

我有一個字節數組,我需要測試它是否是base64編碼。

+1

你知道未編碼的byte數組應該包含什麼?檢查的唯一方法是取消編碼,看看你是否回到原來的位置。 –

+0

您無法區分*看起來像Base64的東西,而實際上*就是* Base64的東西。您需要保持跟蹤元數據。 – Durandal

回答

1

Base64編碼串具有長度被4整除,並且由字符A的 - Za - z0 - 9+,和/。如果您的字節數組的長度不能被4整除,或者包含映射到這些範圍之外的字符的字節,則它不代表Base64編碼的字符串;否則,您的字節數組表示有效的Base-64編碼字符串。

+0

這隻有在字節數組由'String.getBytes(encoding)'生成時才寫入?另外,我們不知道使用了哪種編碼。所以我會說這不是OP想要的東西 – Andremoniy

+1

@Andremoniy你對'String.getBytes'的假設是正確的,也是對正確編碼的假設。我認爲OP *想要的*很清楚,但不清楚OP *具有哪些* :-) – dasblinkenlight

+0

Base64不是* single *標準編碼。有多種方言(部分兼容)。例如,填充在許多情況下是可選的。也有不止一個可能的字母表:https://en.wikipedia.org/wiki/Base64 – Durandal

5

您可以使用Apache的Base64.isBase64(byte[])方法:

import org.apache.commons.codec.binary.Base64; 

... 

boolean isBase64 = Base64.isBase64(bytes); 
相關問題