See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 10067|Vastuse: 0

URL turvaline Base64 kodeerimine, dekodeerimine

[Kopeeri link]
Postitatud 15.11.2019 14:10:48 | | |
Base64 suudab binaarseid märke HTTP edastamiseks nähtavateks märkideks transkodeerida, kuid Base64 transkodeerimine genereerib URL-iga transkodeeritud "+", "/", "=" ja teisi erimärke, mis põhjustab nende kahe aspekti vahel vastuolu.
Võime asendada "+", "/" ja "=" märkidega, mis URL-e enne saatmist ei transkodeerita, ning seejärel need tähemärgid pärast andmete saamist tagasi ja dekodeerida need.


PHP:

    /**

     * URL base64 dekodeerimine

     * '-' -> '+'

     * '_' -> '/'

     * Stringi ülejäänud pikkus %4, täiend '='

     * @param tundmatu $string

     */

    avalik staatiline funktsioon urlsafe_b64decode($string) {

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

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

        if ($mod 4) {

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

        }

        tagasipöördumine base64_decode($data);

    }

   

    /**

     * URL base64 kodeeritud

     * '+' -> '-'

     * '/' -> '_'

     * '=' -> ''

     * @param tundmatu $string

     */

    funktsioon urlsafe_b64encode($string) {

        $data = base64_encode($string);

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

        Tagasi $data;

    }




OC:



#pragma - Teisenda saveBase64 kodeeringus stringid "-", "_" väärtusteks "+", "/" ning biti täiendus 4 korda jada "=" pikkusega

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

{

    // '-' -> '+'

    // '_' -> '/'

    Kui pikkus on väiksem kui 4 korda, kompenseeri '='

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

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

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

    NSInteger mod4 = base64Str.pikkus % 4;

    if(mod4 > 0)

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

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

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

   

}



#pragma - Base64 kodeerimine sisaldab +, /, = neid ebaturvalisi URL-jadasid, seega muuda tähemärke

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

    tagasipöördumine turvaliseltBase64Str;

}



Java:

public static String safeUrlBase64Encode(byte[] data){

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

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

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

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

tagasipöördumine turvaliseltBase64Str;

}


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

}

return new BASE64Decoder().decodeBuffer(base64Str);

}



Androidi jaoks sisaldab android.utils.Base64 järgmist funktsiooni:

Base64.encodeToString(krüpteeritud, Base64.URL_SAFE| Base64.NO_WRAP);

Base64.decode (andmed, Base64.URL_SAFE);




Eelmine:Mängi konto lukustamise turvastrateegiaga
Järgmine:C# ühendab sqlserveri kahe tüüpi ühendusstringidega Windowsi ja SQLserveri autentimiseks
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com