Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 10067|Odpoveď: 0

URL bezpečné kódovanie a dekódovanie v Base64

[Kopírovať odkaz]
Zverejnené 15. 11. 2019 14:10:48 | | |
Base64 dokáže transkódovať binárne znaky na viditeľné znaky pre prenos HTTP, ale Base64 transkódovanie generuje "+", "/", "=" a ďalšie špeciálne znaky transkódované URL, čo vedie k nekonzistencii medzi týmito dvoma aspektmi.
Môžeme nahradiť "+", "/" a "=" znakmi, ktoré netranskódujú URL pred odoslaním, a potom tieto znaky po prijatí dát nahradiť späť a následne ich dekódovať.


PHP:

    /**

     * dekódovanie URL base64

     * '-' -> '+'

     * '_' -> '/'

     * Zvyšok dĺžky struny %4, doplnok '='

     * @param neznámy $string

     */

    Verejná statická funkcia urlsafe_b64decode($string) {

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

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

        ak ($mod 4) {

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

        }

        return base64_decode($data);

    }

   

    /**

     * URL base64 kódovaná

     * '+' -> '-'

     * '/' -> '_'

     * '=' -> ''

     * @param neznámy $string

     */

    Funkcia urlsafe_b64encode($string) {

        $data = base64_encode($string);

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

        return $data;

    }




OC:



#pragma - Preveďte reťazce "-", "_" v kódovaní saveBase64 na "+", "/" a bitový komplement na 4-násobok dĺžky reťazca "="

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

{

    // '-' -> '+'

    // '_' -> '/'

    Ak je kratšia ako 4-násobok dĺžky, vykompenzujte '='

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

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

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

    NSInteger mod4 = base64Str.dĺžka % 4;

    if(mod4 > 0)

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

    NSLog (@"Base64 originál: %@", base64Str);

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

   

}



#pragma - Base64 kódovanie obsahuje +, /, = tieto nezabezpečené URL reťazce, preto zmeňte znaky

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

{

    // '+' -> '-'

    // '/' -> '_'

    // '=' -> ''

    NSString * base64Str = [GTMBase64 stringByEncodingData:data];

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

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

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

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

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

    vrátiť safeBase64Str;

}



Java:

public static String safeUrlBase64Encode(byte[] data){

String encodeBase64 = nový BASE64Encoder().encode(data);

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

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

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

vrátiť safeBase64Str;

}


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

}



Pre Android android.utils.Base64 obsahuje túto funkciu:

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

Base64.decode(data, Base64.URL_SAFE);




Predchádzajúci:Hrajte si so stratégiou zabezpečenia blokovania účtu
Budúci:C# spája sqlserver s dvoma typmi spojovacích reťazcov pre Windows a SQL Server autentifikáciu
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com