Maison >développement back-end >C++ >Comment effectuer un encodage et un décodage Base64 sécurisés pour les URL dans ASP.NET ?

Comment effectuer un encodage et un décodage Base64 sécurisés pour les URL dans ASP.NET ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-11 22:01:47223parcourir

How to Perform URL-Safe Base64 Encoding and Decoding in ASP.NET?

Encodage/décodage d'URL Safe Base64 dans ASP.NET Framework

L'encodage Base64 est couramment utilisé pour encoder des données binaires dans un format texte afin de les transmettre sur un réseau. Cependant, le codage Base64 standard contient des caractères (notamment « » et « / ») qui peuvent interférer avec les modèles d'URI et les URL.

Pour résoudre ce problème, une version modifiée de l'encodage Base64 existe spécifiquement pour les URL. Dans cette variante, " " et "/" sont remplacés respectivement par "-" et "_", et le caractère de remplissage "=" est omis.

L'implémentation d'une version modifiée de Base64 pour les URL dans le framework ASP.NET peut utiliser la méthode suivante :

Décodage :

  1. Remplacez "-" par " " et "_" par "/" dans le texte codé en Base64.
  2. Déterminez le nombre de caractères "=" manquants en fonction de la longueur du texte codé en Base64.
  3. Ajoutez les caractères "=" requis au texte codé en Base64.
  4. Effectue un décodage Base64 régulier sur du texte codé en Base64 modifié.

Encodage :

  1. Effectuez un encodage Base64 régulier sur les données brutes.
  2. Remplacez les caractères "=" par le nombre approprié de "0", "1" ou "2" en fonction de la longueur de la chaîne Base64.
  3. Remplacez " " par "-" et "/" par "_".

Alternative :

.NET Framework fournit la classe HttpServerUtility, qui contient les méthodes UrlTokenEncode et UrlTokenDecode qui gèrent l'encodage et le décodage Base64 sécurisés pour les URL.

Code :

<code class="language-csharp">// 编码
string base64UrlEncodedText = HttpServerUtility.UrlTokenEncode(Encoding.UTF8.GetBytes(plaintext));

// 解码
string plaintext = Encoding.UTF8.GetString(HttpServerUtility.UrlTokenDecode(base64UrlEncodedText));</code>

Remarque : la méthode HttpServerUtility renvoie une implémentation base64url non standard dans laquelle le caractère de remplissage "=" est remplacé par "0", "1" ou "2". Ceci est différent de la norme RFC4648, qui utilise le caractère "=" pour le remplissage.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn