Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 10067|Svar: 0

URL sikker Base64-kodning, dekodning

[Kopier link]
Opslået på 15/11/2019 14.10.48 | | |
Base64 kan transkode binære tegn til synlige tegn til HTTP-transmission, men Base64-transkodning vil generere "+", "/", "=" og andre specialtegn, der transkodes af URL'en, hvilket resulterer i inkonsistens mellem de to aspekter.
Vi kan erstatte "+", "/" og "=" med tegn, der ikke transkoder URL'er før afsendelse, og derefter erstatte disse tegn igen efter modtagelse af dataene og derefter dekode dem.


PHP:

    /**

     * URL base64-dekodning

     * '-' -> '+'

     * '_' -> '/'

     * Resten af strenglængden %4, komplement '='

     * @param ukendt $string

     */

    offentlig statisk funktion urlsafe_b64decode($string) {

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

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

        hvis ($mod 4) {

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

        }

        returnere base64_decode($data);

    }

   

    /**

     * URL base64 kodet

     * '+' -> '-'

     * '/' -> '_'

     * '=' -> ''

     * @param ukendt $string

     */

    funktion urlsafe_b64encode($string) {

        $data = base64_encode($string);

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

        vend tilbage $data;

    }




OC:



#pragma - Konverter strengene "-", "_" i saveBase64-kodning til "+", "/", og bitkomplementet med 4 gange strengens længde "="

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

{

    // '-' -> '+'

    // '_' -> '/'

    Hvis den er mindre end 4 gange længden, kompenser for '='

    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 - Base64-kodning indeholder +, /, = disse usikre URL-strenge, så skift tegn.

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

{

    // '+' -> '-'

    // '/' -> '_'

    // '=' -> ''

    NSString * base64Str = [GTMBase64 stringByEncodingData:data];

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

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

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

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

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

    vend sikkert tilbageBase64Str;

}



Java:

offentlig statisk String safeUrlBase64Encode(byte[] data){

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

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

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

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

vend sikkert tilbageBase64Str;

}


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

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

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

int mod4 = base64Str.length()%4;

if(mod4 > 0){

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

}

return new BASE64Decoder().decodeBuffer(base64Str);

}



Til Android leveres android.utils.Base64 med denne funktion:

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

Base64.decode(data, Base64.URL_SAFE);




Tidligere:Leg med en kontolåsningsstrategi
Næste:C# forbinder sqlserver til to typer forbindelsesstrenge til Windows- og sqlserver-autentificering
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com