Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[ASP.NET C# v1.1] MD5 et passage de paramètre par l'url

1 réponse
Avatar
Nicolas
Bonjour,

J'utilise une classe en C# que j'ai faites afin d'encoder les paramètres que je passe
par l'url.
J'utilise les classes de crypto du framework .NET.

Le problème apparemment, c'est que parfois ma chaine codé contient le caractère suivant :
+
Et apparemment, il semble que ce caractère est remplacé par un espace lorsque je récupère
cette chaine via le code suivant :
Request.QueryString["menuclick"].ToString();

Voici moon url :
/liens.aspx?menuclick=D3xW3HwzkeBBPDi6SHgKnO43TEV8ClB1+7FEYI8j3ac=

Existe-t-il un moyen afin d'eviter ce probleme ?

Voici le code de ma classe de crypto :

-----------------------------------------------------------------------------------------------------------------------------
public class HashMD5 {
private string _key = "test";

public string Encrypt(string texte) {
TripleDESCryptoServiceProvider objDES = new TripleDESCryptoServiceProvider();
MD5CryptoServiceProvider objMD5 = new MD5CryptoServiceProvider();

objDES.Key = objMD5.ComputeHash(ASCIIEncoding.ASCII.GetBytes(this._key));
objDES.Mode = CipherMode.ECB;

ICryptoTransform objDESEncrypt = objDES.CreateEncryptor();
byte[] objBuffer = ASCIIEncoding.ASCII.GetBytes(texte);

return Convert.ToBase64String(objDESEncrypt.TransformFinalBlock(objBuffer, 0,
objBuffer.Length));
}

public string Decrypt(string texte64) {

TripleDESCryptoServiceProvider objDES = new TripleDESCryptoServiceProvider();
MD5CryptoServiceProvider objMD5 = new MD5CryptoServiceProvider();

objDES.Key = objMD5.ComputeHash(ASCIIEncoding.ASCII.GetBytes(this._key));
objDES.Mode = CipherMode.ECB;

ICryptoTransform objDESDecrypt = objDES.CreateDecryptor();
byte[] objBuffer = Convert.FromBase64String(texte64);

return ASCIIEncoding.ASCII.GetString(objDESDecrypt.TransformFinalBlock(objBuffer, 0,
objBuffer.Length));
}
}
}
-----------------------------------------------------------------------------------------------------------------------------

Merci d'avance pour votre aide.

Cordialement.
Nicolas COLLET.

1 réponse

Avatar
Paul Bacelar
Il faut URLEncoder vos URL.
Les + se transformeront en %2B etc.
--
Paul Bacelar

"Nicolas" wrote in message
news:#
Bonjour,

J'utilise une classe en C# que j'ai faites afin d'encoder les


paramètres que je passe
par l'url.
J'utilise les classes de crypto du framework .NET.

Le problème apparemment, c'est que parfois ma chaine codé contient le


caractère suivant :
+
Et apparemment, il semble que ce caractère est remplacé par un espace


lorsque je récupère
cette chaine via le code suivant :
Request.QueryString["menuclick"].ToString();

Voici moon url :
/liens.aspx?menuclickÓxW3HwzkeBBPDi6SHgKnO43TEV8ClB1+7FEYI8j3ac >
Existe-t-il un moyen afin d'eviter ce probleme ?

Voici le code de ma classe de crypto :

--------------------------------------------------------------------------


---------------------------------------------------
public class HashMD5 {
private string _key = "test";

public string Encrypt(string texte) {
TripleDESCryptoServiceProvider objDES = new


TripleDESCryptoServiceProvider();
MD5CryptoServiceProvider objMD5 = new MD5CryptoServiceProvider();

objDES.Key objMD5.ComputeHash(ASCIIEncoding.ASCII.GetBytes(this._key));
objDES.Mode = CipherMode.ECB;

ICryptoTransform objDESEncrypt = objDES.CreateEncryptor();
byte[] objBuffer = ASCIIEncoding.ASCII.GetBytes(texte);

return


Convert.ToBase64String(objDESEncrypt.TransformFinalBlock(objBuffer, 0,
objBuffer.Length));
}

public string Decrypt(string texte64) {

TripleDESCryptoServiceProvider objDES = new


TripleDESCryptoServiceProvider();
MD5CryptoServiceProvider objMD5 = new MD5CryptoServiceProvider();

objDES.Key objMD5.ComputeHash(ASCIIEncoding.ASCII.GetBytes(this._key));
objDES.Mode = CipherMode.ECB;

ICryptoTransform objDESDecrypt = objDES.CreateDecryptor();
byte[] objBuffer = Convert.FromBase64String(texte64);

return


ASCIIEncoding.ASCII.GetString(objDESDecrypt.TransformFinalBlock(objBuffer,
0,
objBuffer.Length));
}
}
}
--------------------------------------------------------------------------


---------------------------------------------------

Merci d'avance pour votre aide.

Cordialement.
Nicolas COLLET.