Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 10067|Válasz: 0

URL biztonságos Base64 kódolás, dekódolás

[Linket másol]
Közzétéve 2019. 11. 15. 14:10:48 | | |
A Base64 képes bináris karaktereket látható karakterekké transzkódolni HTTP átvitelhez, de a Base64 átkódolása "+", "/", "=" és más speciális karaktereket generál, amelyeket az URL átalakít, ami következetlenséget eredményez a két aspektus között.
Lecserélhetjük a "+", "/" és "=" karaktereket olyan karakterekkel, amelyek nem transzkódolják az URL-eket küldés előtt, majd visszacserélhetjük ezeket a karaktereket az adatok megérkezése után, majd dekódolhatjuk.


PHP:

    /**

     * URL base64 dekódolás

     * '-' -> '+'

     * '_' -> '/'

     * A húr hosszának fennmaradó %4, komplementum '='

     * @param ismeretlen $string

     */

    Nyilvános statikus függvény urlsafe_b64decode($string) {

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

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

        if ($mod 4) {

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

        }

        visszatérés base64_decode($data);

    }

   

    /**

     * URL base64 kódolva

     * '+' -> '-'

     * '/' -> '_'

     * '=' -> ''

     * @param ismeretlen $string

     */

    function urlsafe_b64encode($string) {

        $data = base64_encode($string);

        $data = str_replace(tömb('+','/','='),tömb('-','_',''),$data);

        visszatér $data;

    }




OC:



#pragma - Átalakítsuk a "-", "_" stringeket a saveBase64 kódolásban "+", "/" betűkre, és a bitkomplementment 4-szeresére a "=" húr hosszának 4-szeresére

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

{

    // '-' -> '+'

    // '_' -> '/'

    Ha kevesebb, mint 4-szer a hossz, pótoljuk '='

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

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

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

    NSInteger mod4 = bázis64Hossz % 4;

    if(mod4 > 0)

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

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

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

   

}



#pragma - A Base64 kódolás +, /, = ezeket a biztonságos URL-sorokat tartalmazza, tehát változtass karaktereket

+(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:@"=" with String:@"""];

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

    visszatérés biztonságos Base64Str;

}



Java:

public static String safeUrlBase64Encode(byte[] data){

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

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

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

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

visszatérés biztonságos 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);

}



Androidra az android.utils.Base64 ezzel a funkcióval érkezik:

Base64.encodeToString(titkosított, Base64.URL_SAFE| Base64.NO_WRAP);

Base64.decode(adat, Base64.URL_SAFE);




Előző:Játssz fiókzárolási biztonsági stratégiával
Következő:C# a sqlservert kétféle kapcsolati stringhez köti Windows és SQL Server hitelesítéshez
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com