Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 10067|Antwoord: 0

URL veilige Base64-codering, decodering

[Link kopiëren]
Geplaatst op 15-11-2019 14:10:48 | | |
Base64 kan binaire tekens transcoderen naar zichtbare tekens voor HTTP-transmissie, maar Base64-transcodering genereert "+", "/", "=" en andere speciale tekens die door de URL worden getranscodeerd, wat resulteert in inconsistentie tussen de twee aspecten.
We kunnen "+", "/" en "=" vervangen door tekens die URL's niet transcoderen vóór verzending, en deze tekens vervolgens weer terugplaatsen nadat we de data hebben ontvangen en vervolgens decoderen.


PHP:

    /**

     * URL base64-decodering

     * '-' -> '+'

     * '_' -> '/'

     * De rest van de snaarlengte %4, complement '='

     * @param onbekende $string

     */

    publieke statische functie urlsafe_b64decode($string) {

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

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

        if ($mod 4) {

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

        }

        Terug base64_decode($data);

    }

   

    /**

     * URL base64 gecodeerd

     * '+' -> '-'

     * '/' -> '_'

     * '=' -> ''

     * @param onbekende $string

     */

    functie urlsafe_b64encode($string) {

        $data = base64_encode($string);

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

        Geef $data terug;

    }




OC:



#pragma - Converteer de strings "-", "_" in saveBase64-codering naar "+", "/", en het bitcomplement met 4 keer de lengte van de string "="

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

{

    // '-' -> '+'

    // '_' -> '/'

    Als het minder dan 4 keer de lengte is, maak dan rekening met '='

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

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

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

    NSInteger mod4 = base64Str.length % 4;

    if(mod4 > 0)

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

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

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

   

}



#pragma - Base64-codering bevat +, /, = deze onveilige URL-strings, dus verander tekens

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

{

    // '+' -> '-'

    // '/' -> '_'

    // '=' -> ''

    NSString * base64Str = [GTMBase64 stringByEncodingData:data];

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

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

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

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

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

    veilig terugkerenBase64Str;

}



Java:

publieke statische String safeUrlBase64Encode(byte[] data){

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

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

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

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

veilig terugkerenBase64Str;

}


publieke statische byte[] safeUrlBase64Decode(laatste 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);

}



Voor Android heeft android.utils.Base64 deze functie:

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

Base64.decode(data, Base64.URL_SAFE);




Vorig:Speel met een strategie voor accountlockout
Volgend:C# verbindt SQL Server met twee soorten verbindingsreeksen voor Windows- en SQL-serverauthenticatie
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com