Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 10067|Jawab: 0

Pengkodean Base64 aman URL, decoding

[Salin tautan]
Diposting pada 15/11/2019 14.10.48 | | |
Base64 dapat mentranskode karakter biner menjadi karakter yang terlihat untuk transmisi HTTP, tetapi transcoding Base64 akan menghasilkan "+", "/", "=" dan karakter khusus lainnya yang ditranskode oleh URL, menghasilkan inkonsistensi antara kedua aspek tersebut.
Kita dapat mengganti "+", "/", dan "=" dengan karakter yang tidak mentranskode URL sebelum dikirim, dan kemudian mengganti karakter ini kembali setelah menerima data dan kemudian memecahkan kodenya.


PHP:

    /**

     * Decoding URL base64

     * '-' -> '+'

     * '_' -> '/'

     * Sisa panjang string %4, melengkapi '='

     * @param $string yang tidak diketahui

     */

    Fungsi statis publik urlsafe_b64decode($string) {

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

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

        jika ($mod 4) {

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

        }

        mengembalikan base64_decode($data);

    }

   

    /**

     * URL base64 dikodekan

     * '+' -> '-'

     * '/' -> '_'

     * '=' -> ''

     * @param $string yang tidak diketahui

     */

    fungsi urlsafe_b64encode($string) {

        $data = base64_encode($string);

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

        mengembalikan $data;

    }




OC:



#pragma - Konversi string "-", "_" dalam pengkodean saveBase64 menjadi "+", "/", dan bit melengkapi dengan 4 kali panjang string "="

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

{

    // '-' -> '+'

    // '_' -> '/'

    Jika panjangnya kurang dari 4 kali lipat, tebus '='

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

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

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

    NSInteger mod4 = base64Str.length % 4;

    jika(mod4 > 0)

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

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

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

   

}



#pragma - Pengodean Base64 berisi +, /, = string URL yang tidak aman ini, jadi ubah karakter

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

{

    // '+' -> '-'

    // '/' -> '_'

    // '=' -> ''

    NSString * base64Str = [GTMBase64 stringByEncodingData:data];

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

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

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

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

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

    kembali amanBase64Str;

}



Jawa:

publik statis String safeUrlBase64Encode(byte[] data){

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

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

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

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

kembali amanBase64Str;

}


byte statis publik[] safeUrlBase64Decode(String akhir safeBase64Str){

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

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

int mod4 = base64Str.length()%4;

jika(mod4 > 0){

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

}

mengembalikan BASE64Decoder().decodeBuffer(base64Str) baru;

}



Untuk Android, android.utils.Base64 hadir dengan fitur ini:

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

Base64.decode(data, Base64.URL_SAFE);




Mantan:Bermain dengan strategi keamanan penguncian akun
Depan:C# menghubungkan sqlserver ke dua jenis string koneksi untuk autentikasi windows dan sqlserver
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com