|
DécrypteStandard d'une chaine crypté sous NodeJS |
Débuté par Christian H., 25 fév. 2017 14:59 - 5 réponses |
| |
| | | |
|
| |
Membre enregistré 36 messages |
|
Posté le 25 février 2017 - 14:59 |
Bonjour à tous,
Je tente de crypter une chaine sous nodejs et de la décrypter sous WM. Ci-dessous le code JS
var key = CryptoJS.enc.Utf8.parse('1'); var iv = CryptoJS.enc.Utf8.parse('7061737323313233'); var encrypted = CryptoJS.AES.encrypt(CryptoJS.enc.Utf8.parse("It works"), key, { keySize: 128 / 8, iv: iv }); console.log(iv + " " + encrypted.toString()); J'obtient les valeurs : iv : 37303631373337333233333133323333 encrypted:
Et lorsque je tente de decrypte sous WM :
Procedure mDecrypt(sCles est une chaîne, iv est un chaîne, sMessage est un chaîne) bufCle est un Buffer = HashChaîne(HA_MD5_128, sCles) messageCrypte est un Buffer = iv+sMessage bufCrypte est un Buffer = DécrypteStandard(messageCrypte, bufCle, crypteAES128)
Info(bufCrypte) RENVOYER bufCrypte
mDecrypt("1", "37303631373337333233333133323333", "Ijpt1GDVgM4MqMAQUwf0Q==") J'obtient une chaine vide (Le décryptage du message a choué, la phgase de finalisation de l'algorithme a échoué....)
Quelqu'un aurait une idée ?Message modifié, 25 février 2017 - 15:11 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 36 messages |
|
Posté le 25 février 2017 - 17:01 |
J'ai vu dans quelque poste que cela pouvait provenir de l'encodage, j'ai donc modifié mon code : Côté nodejs:
var key = 'abcdefghijklmnopqr'; console.log(CryptoJS.enc.Utf8.parse("It works")); var encrypted = CryptoJS.AES.encrypt(CryptoJS.enc.Utf8.parse("It works"), key); //console.log(CryptoJS.AES.decrypt(test, key).toString(CryptoJS.enc.Utf8)); console.log(key + " " + encrypted.iv.toString() + " " + encrypted.toString()); Cela donne abcdefghijklmnopqr 75b5d748e34ccbbc317c7b91d9dbb635 U2FsdGVkX19TAn9NYCG6iG3wfe0i6/RXiOoP1cidt6I=
Côté WM :
Procedure mDecrypt(sCles est une chaîne , iv est un chaîne , sMessage est un chaîne ) bufCle est un Buffer = HashChaîne(HA_MD5_128, ChaîneVersUTF8(sCles)) messageCrypte est un Buffer = ChaîneVersUTF8(iv)+ChaîneVersUTF8(sMessage) bufdecrypte est un Buffer = DécrypteStandard(messageCrypte, bufCle, crypteAES128)
RENVOYER bufdecrypte
Pas mieux, pour l'instant les tests sont fait avec l'émulateur |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 36 messages |
|
Posté le 25 février 2017 - 20:57 |
Je pense avancer un peu, il me semble que que les infos données par la lib de cryptage (nodejs) était encodés en base64, puisque lorsque j'applique Décrypte(sMessage, "", crypteAucun, encodeBASE64) sur mon message , je m’aperçois qu'il commence par "SALTED__"
J'ai donc maintenant :
ROCEDURE mDecrypt(sCles est une chaîne ANSI, iv est un chaîne ANSI, sMessage est un chaîne ANSI ) bufCle est un Buffer = HashChaîne(HA_MD5_128, sCles) bufCrypte est un Buffer = Décrypte(iv, "", crypteAucun, encodeBASE64)+Décrypte(sMessage, "", crypteAucun, encodeBASE64) sRésultat est un Buffer = DécrypteStandard(bufCrypte, bufCle,crypteAES128,crypteCBC,cryptePaddingPKCS)
Mais résultat reste désespérément vide. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 36 messages |
|
Posté le 26 février 2017 - 11:04 |
Apres avoir comparé les chaines cryptées avec une version en ligne, je me suis aperçu que les chaines ne correspondaient pas. Après quelque recherches, je me suis aperçu que je faisais quelque erreurs :\ ( longueur de clés ...etc) Pour que cela fonctionne, j'ai : - choisi un autre algorithme : eas-128-ebc ( ne nécessite pas de préciser l'IV) - changer de lib de cryptage sur nodejs : "crypto" au lieu de "crypto-js", je n'ai pas réussi à trouver la bonne méthode pour "crypto-js"
Et maintenant l'échange se fait correctement. |
| |
| |
| | | |
|
| | |
| |
Posté le 27 février 2017 - 09:44 |
Christian H. a exposé le 26/02/2017 :
Apres avoir comparé les chaines cryptées avec une version en ligne, je me suis aperçu que les chaines ne correspondaient pas. Après quelque recherches, je me suis aperçu que je faisais quelque erreurs :\ ( longueur de clés ...etc) Pour que cela fonctionne, j'ai : - choisi un autre algorithme : eas-128-ebc ( ne nécessite pas de préciser l'IV) - changer de lib de cryptage sur nodejs : "crypto" au lieu de "crypto-js", je n'ai pas réussi à trouver la bonne méthode pour "crypto-js"
Et maintenant l'échange se fait correctement.
Perso j'ai perdu beaucoup de temps là dessus et je ne sais même plus où j'en suis resté il y a qq mois. (peut être que j'ai viré mon authentification cryptée pour aller plus loin ??? je ne sais plus)
Mais ce que je sais, c'est que de ne pas avoir des instructions wlangage compatibles tout OS, c'est à l'OPPOSÉ TOTAL de ce que l'on nous vend avec Windev Mobile.
Oui si je travaille avec WM ce n'est pas pour m'enquiquiner avec l'encodage de caractère qui est différent, le cryptage qui est différent, le contenu des .ini qui est différent, le json qui n'est pas au même niveau ... A quoi sert la couche du wlangage sinon, du langage de xieme niveau ?
-- Roumegou Eric |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 36 messages |
|
Posté le 01 mai 2017 - 18:52 |
Je reviens un peu à la charge.
J'ai voulu compilé le code précédent pour IOS, .. bim marche pas.
bufSMessage2 est un Buffer ="a+zPoWSff+olPmtapk5T03DH0vN/3P08i7eebMJFMx55hGXvdDEhI+bBTVKv70uSxoLHTrtEGDfwlT9qSpJixWrtd7Mg2ZgYzbOD4BNZfr/B/cwJUK3ezzPkl3NymxL6aXJq7PQvsMu0QI+/lVVKdcWkdHOLy9xFBWha88CV7XZ19c5JFYmcT03AhrU3haYlplKTnnbReM3Xah9PLCgrKlA0HcA4v4kAaNdxarwS68lYMxbgg3dqbH1k3QGO4aTBzdTBDUeRUy9j9reF5dc4bqnmQeHaP2xfKLEa/c6U3FRKdJ/AzMbcDDkg3sYAH5djmZeoGlC66fD5uvmgiQC+Yo/E4C1CIVNYwTzi0s6Z12xIYogFxyhYg4THfdNEyjdEciCiUA2ZvAkyTdkrCKTfFbGwg5EWnQaCCa05zS1TywJnW5LyY4f8j240NM7tSKFhR5bqpAN4Ojlz33ZiLLsBRaamg65mKQYBVS1zHkc3b6DlvflRdH4n27wEe30T8wOzNeBbkBRASL4Qyw8sb/1HFRfb4z0awpj7qIq5tIWE3BFcSRl/xSxgzG+NYQe3pltbXZFRI7CjG8pQRvJFJX+lSBKCaqBHMj8MjJ9EkNzobRR4s01EObOFT101Z0zgQ8UN" bufClesCryptageWS est un Buffer="5D6F8C18AE24E6AE"
mess est un Buffer=Décrypte(bufSMessage2,"",crypteAucun,encodeBASE64) Info(DécrypteStandard(mess,bufClesCryptageWS,crypteAES128,crypteECB))
Sous Android pas de soucis, je retrouve bien mon JSON, par contre IOS chaine vide. Cela doit peut être provenir d'un problème d'encodage, j'ai essayé de le retourner dans tous les sens sans succès.
Si quelqu'un à une idée, la je suis gavé Message modifié, 01 mai 2017 - 19:03 |
| |
| |
| | | |
|
| | | | |
| | |
|