Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 10067|Svar: 0

URL säker Base64-kodning, avkodning

[Kopiera länk]
Publicerad på 2019-11-15 14:10:48 | | |
Base64 kan transkoda binära tecken till synliga tecken för HTTP-överföring, men Base64-transkodning genererar "+", "/", "=" och andra specialtecken som transkodas av URL:en, vilket resulterar i inkonsekvens mellan de två aspekterna.
Vi kan ersätta "+", "/" och "=" med tecken som inte transkodar URL:er innan sändning, och sedan ersätta dessa tecken igen efter att ha mottagit datan och sedan avkoda dem.


PHP:

    /**

     * URL base64-avkodning

     * '-' -> '+'

     * '_' -> '/'

     * Resten av stränglängden %4, komplement '='

     * @param okänt $string

     */

    Publik statisk funktion urlsafe_b64decode($string) {

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

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

        om ($mod 4) {

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

        }

        återvända base64_decode($data);

    }

   

    /**

     * URL base64 kodad

     * '+' -> '-'

     * '/' -> '_'

     * '=' -> ''

     * @param okänt $string

     */

    funktion urlsafe_b64encode($string) {

        $data = base64_encode($string);

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

        återvända $data;

    }




OC:



#pragma - Konvertera strängarna "-", "_" i saveBase64-kodning till "+", "/", och bitkomplementet med 4 gånger strängens längd "="

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

{

    // '-' -> '+'

    // '_' -> '/'

    Om den är mindre än fyra gånger längden, kompenserar för '='

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

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

    base64Str = (NSMutableString * )[base64Str stringByReplacingOccurrencesOfString:@"_" 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 - Base64-kodningen innehåller +, /, = dessa osäkra URL-strängar, så byt tecken

+(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 stringByReplacingOccurrencesOfString:@"=" withString:@""];

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

    återvänd säkerBase64Str;

}



Java:

publik statisk Sträng safeUrlBase64Encode(byte[] data){

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

Sträng safeBase64Str = encodeBase64.replace('+', '-');

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

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

återvänd säkerBase64Str;

}


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);

}

returnera ny BASE64Decoder().decodeBuffer(base64Str);

}



För Android har android.utils.Base64 denna funktion:

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

Base64.decode (data, Base64.URL_SAFE);




Föregående:Lek med en strategi för kontolåsning
Nästa:C# kopplar SQL Server till två typer av anslutningssträngar för autentisering av Windows och SQL Server
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com