Je dispose d'une chaîne (composée d'un ID utilisateur et d'un horodatage) que je crypte ensuite à l'aide de Encrypt de ColdFusion (inputString, myKey, "Blowfish/ECB/PKCS5Padding "," Hex ").ColdFusion: Entier "0" ne convertit pas en caractère ASCII
Pour l'interface avec une partie 3d je dois alors effectuer les opérations suivantes:
- Convertir chaque paire de caractères dans la chaîne résultant en une valeur HEX.
- Les valeurs HEX sont alors représentées comme des entiers.
- Les entiers résultants sont ensuite affichés en tant que caractères ASCII.
- Tous les caractères ASCII se combinent pour former un Bytestring. Bytestring est ensuite converti en Base64.
- base64 est URL codé et finalement expulsé (ouf!)
Tout fonctionne de manière transparente, sauf lorsque la chaîne cfEncrypted d'origine contient un « 00 ».
La valeur HEX 00 se traduit par l'entier (via la fonction InputBaseN) 0 qui refuse alors de se traduire correctement en caractère ASCII!
La chaîne d'octets résultante (et donc la chaîne d'URL) est foirée et la partie 3d est incapable de la déchiffrer.
Il convient de mentionner que je déclare: < type cfcontent = "text/html; charset = iso-8859-1" > en haut de la page.
Existe-t-il un moyen de sortir correctement 00 comme ASCII? Pourrais-je éviter d'avoir "00" dans la chaîne cryptée d'origine? Toute aide serait grandement appréciée :)
Pouvez-vous fournir un petit test, y compris les résultats réels par rapport aux résultats attendus? (Aussi, je ne suis pas sûr pourquoi vous avez besoin de l'étape 1 si votre encrypt() retourne "hex" ..) – Leigh