Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 10067|Odgovoriti: 0

URL varno kodiranje in dekodiranje v Base64

[Kopiraj povezavo]
Objavljeno na 15. 11. 2019 14:10:48 | | |
Base64 lahko preoblikuje binarne znake v vidne znake za prenos HTTP, medtem ko Base64 transkodiranje generira "+", "/", "=" in druge posebne znake, ki jih prenese URL, kar povzroči neskladje med obema vidikoma.
Lahko zamenjamo "+", "/" in "=" z znaki, ki pred pošiljanjem ne transkodirajo URL-jev, nato pa te znake po prejemu podatkov ponovno zamenjamo in jih dekodiramo.


PHP:

    /**

     * dekodiranje URL-jev base64

     * '-' -> '+'

     * '_' -> '/'

     * Preostanek dolžine strune %4, komplement '='

     * @param neznan $string

     */

    Javna statična funkcija urlsafe_b64decode($string) {

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

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

        če ($mod 4) {

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

        }

        vrnitev base64_decode($data);

    }

   

    /**

     * URL base64 kodiran

     * '+' -> '-'

     * '/' -> '_'

     * '=' -> ''

     * @param neznan $string

     */

    funkcija urlsafe_b64encode($string) {

        $data = base64_encode($string);

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

        vrnitev $data;

    }




OC:



#pragma - Pretvorite nize "-", "_" v kodiranju saveBase64 v "+", "/" in bitni komplement s štirikratno dolžino niza "="

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

{

    // '-' -> '+'

    // '_' -> '/'

    Če je manj kot 4-krat daljši, nadomestimo '='

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

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

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

    NSInteger mod4 = osnova64Str.dolžina % 4;

    if(mod4 > 0)

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

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

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

   

}



#pragma - Base64 kodiranje vsebuje +, /, = te nevarne URL nize, zato spremenite znake

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

{

    // '+' -> '-'

    // '/' -> '_'

    // '=' -> ''

    NSString * base64Str = [GTMBase64 stringByEncodingData:data];

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

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

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

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

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

    vrni varnoBase64Str;

}



Java:

public static String safeUrlBase64Encode(byte[] data){

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

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

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

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

vrni varnoBase64Str;

}


javni statični bajt[] safeUrlBase64Decode(končni niz 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);

}



Za Android android.utils.Base64 vsebuje to funkcijo:

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

Base64.decode(data, Base64.URL_SAFE);




Prejšnji:Preizkusi strategijo zaklepanja računa
Naslednji:C# povezuje sqlserver z dvema vrstama povezovalnih nizov za avtentikacijo Windows in SQL Server
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com