Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 10067|Antwort: 0

URL-sichere Base64-Codierung, Dekodierung

[Link kopieren]
Veröffentlicht am 15.11.2019 14:10:48 | | |
Base64 kann binäre Zeichen in sichtbare Zeichen für HTTP-Übertragung transkodieren, aber Base64-Transkodierung erzeugt "+", "/", "=" und andere von der URL transkodierte Sonderzeichen, was zu Inkonsistenzen zwischen den beiden Aspekten führt.
Wir können "+", "/" und "=" durch Zeichen ersetzen, die URLs vor dem Senden nicht transkodieren, diese Zeichen nach Erhalt der Daten wieder ersetzen und anschließend dekodieren.


PHP:

    /**

     * URL base64-Dekodierung

     * '-' -> '+'

     * '_' -> '/'

     * Der Rest der Saitenlänge %4, Komplement '='

     * @param unbekannte $string

     */

    öffentliche statische Funktion urlsafe_b64decode($string) {

        $data = str_replace(Array('-','_'),Array('+','/'),$string);

        $mod 4 = strlen($data) % 4;

        wenn ($mod 4) {

            $data .= substr('====', $mod 4);

        }

        Rückkehr base64_decode($data);

    }

   

    /**

     * URL base64 kodiert

     * '+' -> '-'

     * '/' -> '_'

     * '=' -> ''

     * @param unbekannte $string

     */

    Funktion urlsafe_b64encode($string) {

        $data = base64_encode($string);

        $data = str_replace(Array('+','/','='),Array('-','_',''),$data);

        $data zurückkehren;

    }




OC:



#pragma - Konvertiere die Zeichenketten "-", "_" in der saveBase64-Codierung in "+", "/" und das Bitkomplement mit vierfacher Länge der Zeichenkette "="

+(NSData*)safeUrlBase64Decode:(NSString*)safeUrlbase64Str

{

    // '-' -> '+'

    // '_' -> '/'

    Wenn sie weniger als das 4-fache der Länge ist, erfüllen Sie '='

    NSMutableString * base64Str = [[NSMutableString alloc]initWithString:safeUrlbase64Str];

    base64Str = (NSMutableString * )[base64Str stringByRepplaceingOccurrencesOfString:@"-" withString:@"+"];

    base64Str = (NSMutableString * )[base64Str stringByRepplaceingOccurrencesOfString:@"_" withString:@"/"];

    NSInteger mod4 = base64Str.length % 4;

    if(mod4 > 0)

        [base64Str appendString:[@"====" substringToIndex:(4-mod4)]];

    NSLog(@"Base64 original: %@", base64Str);

    return [GTMBase64 decodeData:[base64Str dataUsingEncoding:NSUTF8StringEncoding]];

   

}



#pragma - Die Base64-Codierung enthält +, /, = diese unsicheren URL-Strings, also ändere die Zeichen

+(NSString*)safeUrlBase64Encode:(NSData*)data

{

    // '+' -> '-'

    // '/' -> '_'

    // '=' -> ''

    NSString * base64Str = [GTMBase64 stringByEncodingData:data];

    NSMutableString * safeBase64Str = [[NSMutableString alloc]initWithString:base64Str];

    safeBase64Str = (NSMutableString * )[safeBase64Str stringByRepplaceingOccurrencesOfString:@"+" withString:@"-"];

    safeBase64Str = (NSMutableString * )[safeBase64Str stringByReplacingOccurrencesOfString:@"/" withString:@"_"];

    safeBase64Str = (NSMutableString * )[safeBase64Str stringByRepplaceingOccurrencesOfString:@"=" withString:@""];

    NSLog(@"safeBase64encoded:%@", safeBase64Str);

    sichere Rückkehr Base64Str;

}



Java:

public static String safeUrlBase64Encode(byte[] data){

String encodeBase64 = neuer BASE64Encoder().encode(data);

String safeBase64Str = encodeBase64.replace('+', '-');

safeBase64Str = safeBase64Str.replace('/', '_');

safeBase64Str = safeBase64Str.replaceAll("=", "");

sichere Rückkehr Base64Str;

}


public static byte[] safeUrlBase64Decode(final String safeBase64Str){

String base64Str = safeBase64Str.replace('-', '+');

base64Str = base64Str.replace('_', '/');

int mod4 = base64Str.length()%4;

if(mod4 > 0){

base64Str = base64Str + "====".substring(mod4);

}

return new BASE64Decoder().decodeBuffer(base64Str);

}



Für Android bietet android.utils.Base64 folgende Funktion:

Base64.encodeToString(encrypted, Base64.URL_SAFE| Base64.NO_WRAP);

Base64.decode(data, Base64.URL_SAFE);




Vorhergehend:Spielen Sie mit einer Strategie zur Kontosperrung
Nächster:C# verbindet SQL Server mit zwei Arten von Verbindungszeichenketten für Windows- und SQL-Server-Authentifizierung
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com