Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 10067|Vastaus: 0

URL-turvallinen Base64-koodaus, dekoodaus

[Kopioi linkki]
Julkaistu 15.11.2019 14.10.48 | | |
Base64 voi transkoodata binäärimerkit näkyviksi merkeiksi HTTP-siirtoa varten, mutta Base64 tuottaa URL:n transkoodaamia "+", "/", "=" ja muita erikoismerkkejä, mikä aiheuttaa epäjohdonmukaisuutta näiden kahden aspektin välillä.
Voimme korvata "+", "/" ja "=" merkeillä, jotka eivät transkoodaa URL-osoitteita ennen lähettämistä, ja sitten palauttaa nämä merkit tiedon vastaanottamisen jälkeen ja purkaa ne.


PHP:

    /**

     * URL base64 dekoodaus

     * '-' -> '+'

     * '_' -> '/'

     * Jäljelle jäänyt merkkijonon pituus %4, komplementti '='

     * @param tuntematon $string

     */

    julkinen staattinen funktio urlsafe_b64decode($string) {

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

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

        if ($mod 4) {

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

        }

        return base64_decode($data);

    }

   

    /**

     * URL base64 koodattu

     * '+' -> '-'

     * '/' -> '_'

     * '=' -> ''

     * @param tuntematon $string

     */

    funktio urlsafe_b64encode($string) {

        $data = base64_encode($string);

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

        palaa $data;

    }




OC:



#pragma - Muunna saveBase64-koodauksessa merkkijonot "-", "_" muotoihin "+", "/" ja bittikomplementti, joka on neljä kertaa merkkijonon "=" pituus

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

{

    // '-' -> '+'

    // '_' -> '/'

    Jos pituus on alle 4 kertaa, korvaa '='

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

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

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

    NSInteger mod4 = base64Str.pituus % 4;

    if(mod4 > 0)

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

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

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

   

}



#pragma - Base64-koodaus sisältää +, /, = nämä turvattomat URL-merkkijonot, joten vaihda merkkejä

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

    paluuta turvallisesti Base64Str;

}



Java:

public static String safeUrlBase64Encode(byte[] data){

Merkkijono encodeBase64 = uusi BASE64Encoder().encode(data);

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

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

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

paluuta turvallisesti Base64Str;

}


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

}



Androidille android.utils.Base64 sisältää tämän ominaisuuden:

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

Base64.decode(data, Base64.URL_SAFE);




Edellinen:Kokeile tilin lukitusturvastrategiaa
Seuraava:C# yhdistää sqlserverin kahteen tyyppiseen yhteysmerkkijonoon Windows- ja sqlserver-autentikointia varten
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com