Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 10067|Risposta: 0

Codifica Base64 sicura URL, decodifica

[Copiato link]
Pubblicato su 15/11/2019 14:10:48 | | |
Base64 può trascodificare caratteri binari in caratteri visibili per la trasmissione HTTP, ma la transcodifica Base64 genera "+", "/", "=" e altri caratteri speciali transcodificati tramite URL, causando incoerenza tra i due aspetti.
Possiamo sostituire "+", "/" e "=" con caratteri che non transcodificano gli URL prima di inviarli, e poi riposizionare questi caratteri dopo aver ricevuto i dati e poi decodificarli.


PHP:

    /**

     * Decodifica URL base64

     * '-' -> '+'

     * '_' -> '/'

     * Il resto della lunghezza della corda %4, complemento '='

     * @param sconosciuto $string

     */

    funzione statica pubblica urlsafe_b64decode($string) {

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

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

        se ($mod 4) {

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

        }

        ritorno base64_decode($data);

    }

   

    /**

     * URL codificato base64

     * '+' -> '-'

     * '/' -> '_'

     * '=' -> ''

     * @param sconosciuto $string

     */

    funzione urlsafe_b64encode($string) {

        $data = base64_encode($string);

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

        ritorno $data;

    }




OC:



#pragma - Converti le stringhe "-", "_" nella codifica saveBase64 in "+", "/" e il complemento bit con 4 volte la lunghezza della stringa "="

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

{

    // '-' -> '+'

    // '_' -> '/'

    Se è meno di 4 volte la lunghezza, compensa '='

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

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

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

    NSInteger mod4 = base64Str.length % 4;

    if(mod4 > 0)

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

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

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

   

}



#pragma - La codifica Base64 contiene +, /, = queste stringhe URL insicure, quindi cambia i caratteri

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

{

    // '+' -> '-'

    // '/' -> '_'

    // '=' -> ''

    NSString * base64Str = [GTMBase64 stringByEncodingData:data];

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

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

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

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

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

    return safeBase64Str;

}



Java:

Public static String safeUrlBase64Encode(byte[] data){

Stringa encodeBase64 = nuovo BASE64Encoder().encode(data);

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

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

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

return safeBase64Str;

}


byte statico pubblico[] safeUrlBase64Decode(ultima stringa safeBase64Str){

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

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

int mod4 = base64Str.length()%4;

if(mod4 > 0){

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

}

return new BASE64Decoder().decodeBuffer(base64Str);

}



Per Android, android.utils.Base64 include questa funzione:

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

Base64.decode(dati, Base64.URL_SAFE);




Precedente:Gioca con una strategia di sicurezza per il blocco degli account
Prossimo:C# collega sqlserver a due tipi di stringhe di connessione per l'autenticazione di Windows e SQLSERVER
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com