Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 10067|Répondre: 0

Encodage sécurisé Base64 URL, décodage

[Copié le lien]
Publié sur 15/11/2019 14:10:48 | | |
Base64 peut transcoder des caractères binaires en caractères visibles pour la transmission HTTP, mais le transcodage Base64 génère des caractères « + », « / », « = » » et d’autres caractères spéciaux transcodés par l’URL, ce qui entraîne une incohérence entre les deux aspects.
Nous pouvons remplacer « + », « / » et « = » » par des caractères qui ne transcodent pas les URL avant d’être envoyés, puis replacer ces caractères après avoir reçu les données et les décoder.


PHP :

    /**

     * Décodage URL base64

     * '-' -> '+'

     * '_' -> '/'

     * Le reste de la longueur de la corde %4, complément '='

     * @param inconnu $string

     */

    fonction statique publique urlsafe_b64decode($string) {

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

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

        si ($mod 4) {

            $data .= sous-str('====', $mod 4) ;

        }

        retour base64_decode($data) ;

    }

   

    /**

     * URL encodée base64

     * '+' -> '-'

     * '/' -> '_'

     * '=' -> ''

     * @param inconnu $string

     */

    fonction urlsafe_b64encode($string) {

        $data = base64_encode($string) ;

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

        retour $data ;

    }




OC:



#pragma - Convertir les chaînes « - », « _ » dans l’encodage saveBase64 en « + », « / », et le complément de bits avec 4 fois la longueur de la chaîne « = »

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

{

    // '-' -> '+'

    // '_' -> '/'

    Si elle est inférieure à 4 fois la longueur, compensez '='

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

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

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

    NSInteger mod4 = base64Str.length % 4 ;

    if (mod4 > 0)

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

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

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

   

}



#pragma - L’encodage Base64 contient +, /, = ces chaînes d’URL non sécurisées, donc changer les caractères

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

{

    // '+' -> '-'

    // '/' -> '_'

    // '=' -> ''

    NSString * base64Str = [GTMBase64 stringByEncodingData :data] ;

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

    safeBase64Str = (NSMutableString * )[safeBase64Str stringByReplacementOccurrencesOfString :@"+ » withString :@ »-« ] ;

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

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

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

    retour safeBase64Str ;

}



Java :

public static String safeUrlBase64Encode(byte[] data){

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

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

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

safeBase64Str = safeBase64Str.replaceAll(« = », «  ») ;

retour safeBase64Str ;

}


byte statique public[] safeUrlBase64Decode(final String safeBase64Str){

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

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

int mod4 = base64Str.length() %4 ;

if(mod4 > 0){

base64Str = base64Str + « ==== ».sous-string(mod4) ;

}

return new BASE64Decoder().decodeBuffer(base64Str) ;

}



Pour Android, android.utils.Base64 propose cette fonctionnalité :

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

Base64.decode(data, Base64.URL_SAFE) ;




Précédent:Jouez avec une stratégie de sécurité de verrouillage de compte
Prochain:C# connecte SQLSERVER à deux types de chaînes de connexion pour l’authentification Windows et SQLSERVER
Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com