Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 10067|Yanıt: 0

URL güvenli Base64 kodlama, kodlama

[Bağlantıyı kopyala]
Yayınlandı 15.11.2019 14:10:48 | | |
Base64, ikili karakterleri HTTP iletimi için görünür karakterlere dönüştürebilir, ancak Base64 transkodlama, URL tarafından dönüştürülen "+", "/", "=" ve diğer özel karakterler üretir, bu da iki yön arasında tutarsızlık yaratır.
"+", "/" ve "=" kelimelerini, göndermeden önce URL'leri transkodlamayan karakterlerle değiştirebilir, veri alındıktan sonra bu karakterleri geri değiştirip çözebiliriz.


PHP:

    /**

     * URL base64 kod çözme

     * '-' -> '+'

     * '_' -> '/'

     * Dizin kalan uzunluğu %4, tamamlayıcı '='

     * @param bilinmeyen $string

     */

    public static function urlsafe_b64decode($string) {

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

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

        if ($mod 4) {

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

        }

        base64_decode($data);

    }

   

    /**

     * URL base64 kodlanmış

     * '+' -> '-'

     * '/' -> '_'

     * '=' -> ''

     * @param bilinmeyen $string

     */

    function urlsafe_b64encode($string) {

        $data = base64_encode($string);

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

        $data dön;

    }




OC:



#pragma - saveBase64 kodlamasındaki "-", "_" dizelerini "+", "/" olarak dönüştürün ve biti tamamlayan dizisinin uzunluğunun 4 katı "="

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

{

    // '-' -> '+'

    // '_' -> '/'

    Eğer uzunluğun 4 katından azsa, '=' için telafi edin

    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 orijinal: %@", base64Str);

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

   

}



#pragma - Base64 kodlaması +, /, = bu güvensiz URL dizelerini içerir, bu yüzden karakterleri değiştirin

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

    güvenli geri dönüşBase64Str;

}



Java:

public static String safeUrlBase64Encode(byte[] data){

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

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

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

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

güvenli geri dönüş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);

}



Android için, android.utils.Base64 şu özenle birlikte gelir:

Base64.encodeToString(şifreli, Base64.URL_SAFE| Base64.NO_WRAP);

Base64.decode(data, Base64.URL_SAFE);




Önceki:Hesap kilit güvenlik stratejisiyle oynayın
Önümüzdeki:C#, sqlserver'ı Windows ve sqlserver doğrulaması için iki tür bağlantı dizisine bağlar
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com