J'ai utilisé l'algorithme de clé symétrique (Rijndael) (http://www.obviex.com/samples/Encryption.aspx) pendant un certain temps pour crypter un ID. Ensuite, je URL coder la version cryptée de l'ID et le transmettre dans la chaîne de requête. Lorsque je récupère l'ID de la chaîne de requête, l'URL le décode d'abord et je le décrypte.Algorithme de cryptage pour les applications Web
Un problème est survenu récemment. Si l'ID chiffré a à la fois "espaces" et "+" (par exemple "abc ef + g), l'encodage de l'URL change tous les" espaces "en" + "Ceci est un problème lorsque je décode l'ID Je ne sais pas quel "+" était un "+" et lequel "+" était un "espace"
S'il y a une option que je peux choisir le jeu de caractères de sortie pour être seulement l'alphabet (ie l'ID crypté seulement utilise-t-on AZ)? Ou s'il y a un autre algorithme de cryptage bidirectionnel qui a l'option pour moi de choisir le jeu de caractères de sortie?
Ou je suppose que ma dernière option serait de remplacer manuellement "+" dans l'ID crypté avec quelque chose comme "_SPACE_"
Merci
J'utilise HttpUtility.UrlEncode() pour urlencoder mon ID crypté. Si mon ID chiffré est "abc e +", l'ID codé par l'URL est "abc + e +". Comment est-ce que je décrypte l'URL "abc + e +" plus tard? – David
Votre UrlEncode() est erroné. Il devrait produire "abc + e% 2b". + devrait toujours être encodé. De plus, vous ne devriez pas utiliser d'espace dans l'ID. Ce devrait être une chaîne encodée en Base64. –
Oui, vous avez raison. Il s'est avéré que le problème était que j'obtenais la chaîne de requête avec HttpUtility.ParseQueryString(), qui urldecodes déjà le Querstring. J'ai également appelé HttpUtility.URLDecode(). J'ai donc fini par urlecoder deux fois. – David