Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 10067|Resposta: 0

URL segura codificação Base64, decodificação

[Copiar link]
Publicado em 15/11/2019 14:10:48 | | |
O Base64 pode transcodificar caracteres binários em caracteres visíveis para transmissão HTTP, mas a transcodificação do Base64 gera "+", "/", "=" e outros caracteres especiais transcodificados pela URL, resultando em inconsistência entre os dois aspectos.
Podemos substituir "+", "/" e "="" por caracteres que não transcodificam URLs antes de enviar, e depois recolocar esses caracteres após receber os dados e então decodificá-los.


PHP:

    /**

     * Decodificação de URL base64

     * '-' -> '+'

     * '_' -> '/'

     * O restante do comprimento da corda %4, complemento '='

     * @param desconhecido $string

     */

    função estática pública urlsafe_b64decode($string) {

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

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

        se ($mod 4) {

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

        }

        retorno base64_decode($data);

    }

   

    /**

     * URL codificada base64

     * '+' -> '-'

     * '/' -> '_'

     * '=' -> ''

     * @param desconhecido $string

     */

    função urlsafe_b64encode($string) {

        $data = base64_encode($string);

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

        retorno $data;

    }




OC:



#pragma - Converter as strings "-", "_" na codificação saveBase64 para "+", "/", e o complemento de bits com 4 vezes o comprimento da string "="

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

{

    // '-' -> '+'

    // '_' -> '/'

    Se for menor que 4 vezes o comprimento, compense '='

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

    base64Str = (NSMutableString * )[base64Str stringByResubstitutingOccurrencesOfString:@"-" comString:@"+"];

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

    NSIinteger mod4 = base64Str.length % 4;

    if(mod4 > 0)

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

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

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

   

}



#pragma - A codificação Base64 contém +, /, = essas strings de URL inseguras, então altere os caracteres

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

{

    // '+' -> '-'

    // '/' -> '_'

    // '=' -> ''

    NSString * base64Str = [GTMBase64 stringByEncodingData:data];

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

    safeBase64Str = (NSMutableString * )[safeBase64Str stringByRecomposingOccurrencesOfString:@"+" comString:@"-"];

    safeBase64Str = (NSMutableString * )[safeBase64Str stringByReplacingOccurrencesOfString:@"/" comString:@"_"];

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

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

    retorne safeBase64Str;

}



Java:

String estático público safeUrlBase64Encode(byte[] data){

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

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

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

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

retorne safeBase64Str;

}


byte estático público[] 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);

}



Para Android, android.utils.Base64 vem com este recurso:

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

Base64.decode(data, Base64.URL_SAFE);




Anterior:Jogue com uma estratégia de segurança de bloqueio de contas
Próximo:C# conecta sqlserver a dois tipos de strings de conexão para autenticação do Windows e SQLSERVER
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com