Base64로 인코딩 된 문자열을 디코딩 한 다음 데이터베이스에 저장하고 싶습니다. 입력이 Base64로 인코딩되지 않은 경우 오류를 발생시켜야합니다.
문자열이 Base64로 인코딩되었는지 어떻게 확인할 수 있습니까?
답변
다음 정규식을 사용하여 문자열이 base64로 인코딩되었는지 여부를 확인할 수 있습니다.
^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)?$
base64 인코딩에서 문자 세트는 [A-Z, a-z, 0-9, and + /]
입니다. 나머지 길이가 4보다 작 으면 문자열이 '='
문자 로 채워집니다 .
^([A-Za-z0-9+/]{4})*
문자열이 0 개 이상의 base64 그룹으로 시작 함을 의미합니다.
([A-Za-z0-9+/]{4}|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)$
세 가지 형태 중 하나의 문자열 끝을 의미 [A-Za-z0-9+/]{4}
, [A-Za-z0-9+/]{3}=
또는 [A-Za-z0-9+/]{2}==
.
답변
Java를 사용하는 경우 실제로 commons-codec library를 사용할 수 있습니다.
import org.apache.commons.codec.binary.Base64;
String stringToBeChecked = "...";
boolean isBase64 = Base64.isArrayByteBase64(stringToBeChecked.getBytes());
답변
잘 할 수 있습니다 :
- 길이가 4 자의 배수인지 확인하십시오
- 모든 문자가 세트 AZ, az, 0-9, + 및 /에 있는지 확인하십시오. 끝의 패딩을 제외하고 0, 1 또는 2 ‘=’문자입니다.
base64 가 될 것으로 기대한다면 플랫폼에서 사용 가능한 라이브러리를 사용 하여 바이트 배열로 디코딩 하려고 시도 할 수 있습니다. 유효한 base 64가 아닌 경우 예외가 발생합니다. 플랫폼에 따라 다릅니다. 물론이야.
답변
Java 8 부터는 java.util.Base64 를 사용 하여 문자열을 시도하고 디코딩 할 수 있습니다 .
String someString = "...";
Base64.Decoder decoder = Base64.getDecoder();
try {
decoder.decode(someString);
} catch(IllegalArgumentException iae) {
// That string wasn't valid.
}
답변
PHP5에 대해 이것을 시도하십시오
//where $json is some data that can be base64 encoded
$json=some_data;
//this will check whether data is base64 encoded or not
if (base64_decode($json, true) == true)
{
echo "base64 encoded";
}
else
{
echo "not base64 encoded";
}
PHP7에 이것을 사용하십시오
//$string parameter can be base64 encoded or not
function is_base64_encoded($string){
//this will check if $string is base64 encoded and return true, if it is.
if (base64_decode($string, true) !== false){
return true;
}else{
return false;
}
}
답변
var base64Rejex = /^(?:[A-Z0-9+\/]{4})*(?:[A-Z0-9+\/]{2}==|[A-Z0-9+\/]{3}=|[A-Z0-9+\/]{4})$/i;
var isBase64Valid = base64Rejex.test(base64Data); // base64Data is the base64 string
if (isBase64Valid) {
// true if base64 formate
console.log('It is base64');
} else {
// false if not in base64 formate
console.log('it is not in base64');
}
답변
확인 경우 문자열의 길이가 Aftwerwards가 있는지 확인하기 위해 정규식을 사용하는 4의 배수 인 모든 문자 문자열을 base64로 문자는가.
\A[a-zA-Z\d\/+]+={,2}\z
사용하는 라이브러리가 줄당 76 개의 최대 문자 규칙을 준수하는 방법으로 개행을 추가하는 경우 빈 문자열로 바꾸십시오.