Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 10067|Atsakyti: 0

URL saugus Base64 kodavimas, dekodavimas

[Kopijuoti nuorodą]
Paskelbta 2019-11-15 14:10:48 | | |
Base64 gali perkoduoti dvejetainius simbolius į matomus simbolius HTTP perdavimui, tačiau Base64 perkodavimas sugeneruos "+", "/", "=" ir kitus specialiuosius simbolius, perkoduotus URL, todėl tarp dviejų aspektų atsiras nenuoseklumas.
Galime pakeisti "+", "/" ir "=" simboliais, kurie prieš siųsdami URL neperkoduoja, o gavę duomenis pakeisti šiuos simbolius atgal ir juos iššifruoti.


PHP:

    /**

     * URL base64 dekodavimas

     * '-' -> '+'

     * '_' -> '/'

     * Likusi eilutės ilgio dalis %4, papildymas '='

     * @param nežinomas $string

     */

    viešoji statinė funkcija urlsafe_b64decode($string) {

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

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

        jei ($mod 4) {

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

        }

        grąžinimo base64_decode($data);

    }

   

    /**

     * URL base64 užkoduotas

     * '+' -> '-'

     * '/' -> '_'

     * '=' -> ''

     * @param nežinomas $string

     */

    funkcija urlsafe_b64encode($string) {

        $data = base64_encode($string);

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

        grąžinti $data;

    }




OC:



#pragma - Konvertuoti eilutes "-", "_" saveBase64 kodavimo į "+", "/", ir bitų papildymas su 4 kartus ilgio eilutė "="

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

{

    // '-' -> '+'

    // '_' -> '/'

    Jei jis yra mažesnis nei 4 kartus ilgesnis, kompensuojamas "="

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

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

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

    NSInteger mod4 = base64Str.length % 4;

    IF(MOD4 > 0)

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

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

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

   

}



#pragma - Base64 kodavimas yra +, /, = šios nesaugios URL eilutės, todėl pakeiskite simbolius

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

    grąžinti safeBase64Str;

}



Java:

public static String safeUrlBase64Encode(byte[] data){

Eilutė encodeBase64 = naujas BASE64Encoder().encode(data);

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

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

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

grąžinti safeBase64Str;

}


viešasis statinis baitas[] safeUrlBase64Decode(galutinė eilutė safeBase64Str){

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

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

int mod4 = base64Str.length()%4;

if(mod4 > 0){

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

}

grąžinti naują BASE64Decoder().decodeBuffer(base64Str);

}



"Android" sistemoje android.utils.Base64 yra ši funkcija:

Base64.encodeToString(užšifruotas, Base64.URL_SAFE| Base64.NO_WRAP);

Base64.decode(duomenys, Base64.URL_SAFE);




Ankstesnis:Žaiskite su paskyros blokavimo saugos strategija
Kitą:C# prijungia sqlserver prie dviejų tipų ryšio eilučių, skirtų "Windows" ir sqlserver autentifikavimui
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com