Ermitteln Sie, ob die Zeichenfolge in Base64 JavaScript verwendet

9

Ich verwende die Funktion window.atob('string') , um eine Zeichenfolge von base64 in eine Zeichenfolge zu dekodieren. Jetzt frage ich mich, gibt es eine Möglichkeit zu überprüfen, dass "String" tatsächlich gültig base64 ist? Ich möchte benachrichtigt werden, wenn die Zeichenfolge nicht Base64 ist, damit ich eine andere Aktion ausführen kann.

    
Jonatan 22.10.2011, 14:55
quelle

7 Antworten

7

Wenn "gültig" bedeutet, dass "nur Base64-Zeichen darin enthalten sind", dann überprüfe gegen [A-Za-z0-9+/=] .

Wenn "gültig" eine "legale" base64-kodierte Zeichenfolge bedeutet, sollten Sie am Ende nach dem = suchen.

Wenn "gültig" bedeutet, dass es nach der Decodierung sinnvoll ist, erfordert es Domänenwissen.

    
Dave Newton 22.10.2011, 14:58
quelle
33

Wenn Sie überprüfen möchten, ob es dekodiert werden kann oder nicht, können Sie einfach versuchen, es zu entschlüsseln und sehen, ob es fehlgeschlagen ist:

%Vor%     
pimvdb 22.10.2011 15:03
quelle
15

Dies sollte den Trick machen.

%Vor%     
Dan Smith 03.12.2015 14:24
quelle
11

Ich würde dafür einen regulären Ausdruck verwenden. Versuchen Sie Folgendes:

%Vor%

Erläuterung:

%Vor%     
Anders Tornblad 24.10.2011 10:20
quelle
9

Aufbauend auf @ atornblads Antwort ist die Verwendung der Regex, um einen einfachen Wahr / Falsch-Test für die base64-Gültigkeit zu erstellen, so einfach wie folgt:

%Vor%     
Philzen 25.01.2016 20:58
quelle
2

Diese Methode versucht zu dekodieren, dann zu kodieren und mit dem Original zu vergleichen. Könnte auch mit den anderen Antworten für Umgebungen kombiniert werden, in denen Parsingfehler auftreten. Es ist auch möglich, eine Zeichenkette zu haben, die wie ein gültiger base64 aus Regex-Sicht aussieht, aber nicht tatsächliche base64 ist.

%Vor%     
purplelizard 20.10.2015 05:31
quelle
1

So wird es in einer meiner Lieblings-Validierungs-Bibliotheken gemacht:

%Vor%

Ссылка

    
Lukas Liesis 07.04.2017 13:15
quelle

Tags und Links