J'ai vu ce comportement aujourd'hui en travaillant avec un framework Java EE. Chaque fois que je reçois un ID int du serveur, cet ID est chiffré + codé en base 64, et la chaîne chiffrée est renvoyée. Chaque requête donne une clé chiffrée différente. Le comportement qui est étrange est que si je fais 5 requêtes, le texte crypté que j'ai reçu après la première requête fonctionne toujours (le décryptage me donnera l'ID int correct). Le cryptage fonctionne quelque chose comme ceci:Le décryptage de différentes clés donne le même résultat
request 1 for (same) ID => int ID + salt + ?(assume unique timestamp) = encrypted text 1 => encoded result 1 request 2 for (same) ID => int ID + salt + ?(assume unique timestamp) = encrypted text 2 => encoded result 2
Ma question est: sans rien mettre en cache (tester sur deux stations différentes, des chaînes de chiffrement différentes du même nombre déchiffrera à même nombre sur les deux stations), comment est ce comportement possible , en ce sens que comment l'algorithme de décryptage sait comment mapper de nombreuses chaînes cryptées de 12 caractères aux mêmes données initiales? En outre, y a-t-il une limitation sur le nombre de chaînes cryptées pouvant correspondre aux mêmes données?
Merci! P.S.The Framework, qui est open source, utilise la méthode javax.crypto.Cipher.doFinal à la fois pour le cryptage et le décryptage.
Merci pour vos commentaires. Lors de la création du chiffrement, il utilise la méthode getCipher (Cipher.ENCRYPT_MODE) de la classe javax.crypto.Cipher. La documentation pour la classe entière est à http://stripes.sourceforge.net/docs/current/javadoc/net/sourceforge/stripes/util/CryptoUtil.html et la source peut être téléchargée depuis http://sourceforge.net/ projets/rayures/fichiers/rayures/Stripes% 201.5.1/stripes-1.5.1-src.zip/download. –