2009-06-09 5 views

Répondre

1

Le codage HTML est différent du codage d'URL. L'encodage HTML est utilisé lorsque vous souhaitez générer une URL dans un document HTML. Il échappe aux trucs HTML. Pour générer une URL dans une page HTML, vous devez d'abord encoder les URL pour générer une URL valide, puis l'encoder au format HTML lorsque vous souhaitez l'écrire dans une page HTML.

Utilisez HttpUtility.UrlEncode. Alternativement, vous pouvez d'abord convertir le byte[] en base64 en utilisant Convert.ToBase64String, puis l'encoder en utilisant HttpUtility.UrlEncode. Il est susceptible de générer une URL plus courte.

+0

Ma chaîne cryptée contient un +, et il semble que le + soit perdu pendant le codage/décodage de l'url. Est-ce possible? –

+0

(Je fais d'abord un ToBase64String puis je l'encode.) –

+0

UrlEncoding doit encoder + à sa valeur équivalente (% 2b). En passant, vous ne devriez pas encoder l'URL entière. Vous devriez seulement encoder les paramètres dans l'URL. –

0

L'appel HttpUtility.UrlEncode avant de le mettre dans la chaîne de requête le codera correctement.

Du côté de la réception, la propriété QueryString décode déjà les valeurs, de sorte que vous ne devriez pas appeler toutes les méthodes de décodage (autres que Convert.FromBase64String)

0

AES dans un mode crypte orientée octet. Pour transmettre des octets dans la chaîne de requête, vous devez le convertir en texte. Une façon de le faire est d'utiliser Convert.ToBase64String().

Une fois qu'il a été converti en texte, vous devez vous assurer que tous les caractères non alphanumériques sont encodés correctement via UrlEncode(). Du côté de la réception si UrlDecoded() est déjà reçu, vous devriez être capable de convertir le texte en un flux d'octets crypté via Convert.FromBase64String() puis décrypter le tableau d'octets résultant.

Questions connexes