Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 10067|Atbildi: 0

URL droša Base64 kodēšana, dekodēšana

[Kopēt saiti]
Publicēts 15.11.2019 14:10:48 | | |
Base64 var pārkodēt binārās rakstzīmes redzamās rakstzīmēs HTTP pārraidei, bet Base64 transkodēšana ģenerēs "+", "/", "=" un citas speciālās rakstzīmes, ko pārkodē URL, kā rezultātā rodas neatbilstība starp abiem aspektiem.
Mēs varam aizstāt "+", "/" un "=" ar rakstzīmēm, kas pirms nosūtīšanas nepārkodē URL, un pēc tam aizstāt šīs rakstzīmes atpakaļ pēc datu saņemšanas un pēc tam tās atšifrēt.


PHP:

    /**

     * URL base64 dekodēšana

     * '-' -> '+'

     * '_' -> '/'

     * Virknes garuma atlikums %4, papildinājums '='

     * @param nezināma $string

     */

    publiskā statiskā funkcija urlsafe_b64decode($string) {

        $data = str_replace(masīvs('-','_'),masīvs('+','/'),$string);

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

        ja ($mod 4) {

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

        }

        atgriešanās base64_decode($data);

    }

   

    /**

     * URL base64 kodēts

     * '+' -> '-'

     * '/' -> '_'

     * '=' -> ''

     * @param nezināma $string

     */

    funkcija urlsafe_b64encode($string) {

        $data = base64_encode($string);

        $data = str_replace(masīvs('+','/','='),masīvs('-','_',''),$data);

        atgriešanās $data;

    }




OC:



#pragma - Konvertējiet virknes "-", "_" saveBase64 kodējumā uz "+", "/" un bitu papildinājumu ar 4 reizes lielāku virknes garumu "="

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

{

    // '-' -> '+'

    // '_' -> '/'

    Ja tas ir mazāks par 4 reizēm garāks, aizpildiet "="

    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 oriģināls: %@", base64Str);

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

   

}



#pragma - Base64 kodējums satur +, /, = šīs nedrošās URL virknes, tāpēc mainiet rakstzīmes

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

    atgriezt safeBase64Str;

}



Java:

public static String safeUrlBase64Encode(byte[] data){

String encodeBase64 = jauns BASE64Encoder().encode(dati);

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

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

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

atgriezt safeBase64Str;

}


publiskais statiskais baits[] safeUrlBase64Decode(galīgā virkne safeBase64Str){

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

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

int mod4 = base64Str.length()%4;

if(mod4 > 0){

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

}

atgriezt jaunu BASE64Decoder().decodeBuffer(base64Str);

}



Android ierīcēm android.utils.Base64 ir šāda funkcija:

Base64.encodeToString(šifrēts, Base64.URL_SAFE| Base64.NO_WRAP);

Base64.decode(dati, Base64.URL_SAFE);




Iepriekšējo:Spēlējiet ar konta bloķēšanas drošības stratēģiju
Nākamo:C# savieno sqlserver ar divu veidu savienojuma virknēm Windows un sqlserver autentifikācijai
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com