Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 10067|Svare: 0

URL sikker Base64-koding, dekoding

[Kopier lenke]
Publisert på 15.11.2019 14:10:48 | | |
Base64 kan transkode binære tegn til synlige tegn for HTTP-overføring, men Base64-transkoding vil generere "+", "/", "=" og andre spesialtegn transkodet av URL-en, noe som resulterer i inkonsistens mellom de to aspektene.
Vi kan erstatte "+", "/" og "=" med tegn som ikke transkoder URL-er før sending, og så erstatte disse tegnene igjen etter å ha mottatt dataene og deretter dekode dem.


PHP:

    /**

     * URL base64-dekoding

     * '-' -> '+'

     * '_' -> '/'

     * Resten av strenglengden %4, komplement '='

     * @param ukjent $string

     */

    offentlig statisk funksjon 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 ukjent $string

     */

    funksjon urlsafe_b64encode($string) {

        $data = base64_encode($string);

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

        returnere $data;

    }




OC:



#pragma - Konverter strengene "-", "_" i saveBase64-koding til "+", "/", og bitkomplementet med 4 ganger strengens lengde "="

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

{

    // '-' -> '+'

    // '_' -> '/'

    Hvis den er mindre enn 4 ganger lengden, kompenser for '='

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

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

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

    NSInteger mod4 = base64Str.lengde % 4;

    if(mod4 > 0)

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

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

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

   

}



#pragma - Base64-koding inneholder +, /, = disse usikre URL-strengene, så endre tegn

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

    returner safeBase64Str;

}



Java:

offentlig statisk streng safeUrlBase64Encode(byte[] data){

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

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

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

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

returner safeBase64Str;

}


offentlig statisk byte[] safeUrlBase64Decode(siste streng safeBase64Str){

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

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

int mod4 = base64Str.length()%4;

if(mod4 > 0){

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

}

returner ny BASE64Decoder().decodeBuffer(base64Str);

}



For Android kommer android.utils.Base64 med denne funksjonen:

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

Base64.decode(data, Base64.URL_SAFE);




Foregående:Spill med en sikkerhetsstrategi for kontolåsing
Neste:C# kobler SQL-server til to typer tilkoblingsstrenger for Windows- og SQL-serverautentisering
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com