Page 1 sur 1
Ecriture dans une cellule EXCEL (Zone Encryptée)
Posté : dim. 09 juil. 2017 00:34
par Yle
Bonsoir
Je veux écrire dans une cellule un texte encrypté
Visiblement Excel ne le fait pas. Je dois faire une erreur mais je ne vois pas...
Code : Tout sélectionner
#include <Excel.au3>
#include <MsgBoxConstants.au3>
#include <Crypt.au3>
Local $oXL = _Excel_Open()
_Excel_BookNew($oXL, 1)
$oXL.ActiveSheet.Range("A1").Value = "TEST"
$oXL.ActiveSheet.Range("B1").Value = _Crypt_EncryptData ("encrypter", "2012", $CALG_RC4)
MsgBox(0,"Controle","La zone encrytée n'est pas mise en B1 : " & _Crypt_EncryptData ("encrypter", "2012", $CALG_RC4))
_Excel_Close($oXL) ; Fermeture excel
Merci pour l'aide
Re: Ecriture dans une cellule EXCEL (Zone Encryptée)
Posté : dim. 09 juil. 2017 12:22
par jchd
Je doute fort qu'Excel accepte de stocker une valeur binaire dans une cellule. Convertir ce binaire en texte (hexa) d'abord.
Re: Ecriture dans une cellule EXCEL (Zone Encryptée)
Posté : dim. 09 juil. 2017 15:04
par Yle
JCHD Bonjour,
Effectivement avec un BINARYTOSTRING, les valeurs apparaissent dans EXCEL.
Dans Excel, on peut dire qu'une formule accepte du texte, donc 0XFD09382 c'est du texte non ?
Pour info : Mon programme date de 2012 (Suis en train de faire des modifications)
Avec la fonction _StringEncrypt et Excel 2010, j'arrivai parfaitement à écrire dans une cellule Excel la zone encryptée.. (0XFD09382)
J'ai comme l'impression qu'on régresse....
Re: Ecriture dans une cellule EXCEL (Zone Encryptée)
Posté : dim. 09 juil. 2017 16:21
par walkson
Bonjour,
Je crois que Jchd voulait dire comme ça
Re: Ecriture dans une cellule EXCEL (Zone Encryptée)
Posté : dim. 09 juil. 2017 19:56
par jchd
La fonction _StringEncrypt était non seulement un faux ami (chiffrement très faible voire inopérant) mais aussi fiévreusement bugguée. Elle et sa famille ont donc été abandonnées et remplacées par les fonctions _Crypt_* beaucoup plus solides. Il n'y a donc aucune régression ici. Voir l'aide pour constater que le retour de _Crypt_EncryptData est une valeur binaire, contrairement à sa pauvre aînée malade.
@walkson : tout à fait ça. Le préfixe "0x" n'est peut-être pas utile ici, mais si on en veut, pas la peine d'invoquer Hex() :
$iTest = "" & _Crypt_EncryptData ("encrypter", "2012", $CALG_RC4)
produit le même résultat.
Maintenant, il est plus prudent en règle générale de convertir le texte en UTF8 avant chiffrement et inversement au déchiffrement, sinon surprises !
Re: Ecriture dans une cellule EXCEL (Zone Encryptée)
Posté : dim. 09 juil. 2017 21:44
par walkson
Je ne veux pas polluer la demande de Yle mais j'ai du mal à comprendre la différence entre
$iTest = "0x" & Hex(_Crypt_EncryptData ("encrypter", "2012", $CALG_RC4))
et
$iTest = "" & _Crypt_EncryptData ("encrypter", "2012", $CALG_RC4)
Re: Ecriture dans une cellule EXCEL (Zone Encryptée)
Posté : dim. 09 juil. 2017 23:43
par Yle
Bonsoir à vous 2,
Je ne connaissais pas cette subtilité pour passer une cellule Excel en format texte afin qu'elle accepte une zone binaire représentée en hexadécimal.
Quant à la différence entre '0X" & Hex(...) et "" & _Crypt_EncryptData (...), il y en a pas (je pense) du fait que l'algorithme $CALG_RC4 produit une chaîne binaire représentée en hexa...
Enfin, merci à vous deux de vous être penché sur mon problème
Je clos le sujet.
Re: Ecriture dans une cellule EXCEL (Zone Encryptée)
Posté : lun. 10 juil. 2017 00:15
par orax
walkson a écrit : ↑dim. 09 juil. 2017 21:44
Je ne veux pas polluer la demande de Yle mais j'ai du mal à comprendre la différence entre
$iTest = "0x" & Hex(_Crypt_EncryptData ("encrypter", "2012", $CALG_RC4))
et
$iTest = "" & _Crypt_EncryptData ("encrypter", "2012", $CALG_RC4)
Code : Tout sélectionner
#include <Crypt.au3>
$iTest = "0x" & Hex(_Crypt_EncryptData("encrypter", "2012", $CALG_RC4))
ConsoleWrite(VarGetType($iTest) & @CRLF) ; affiche String
$iTest = "" & _Crypt_EncryptData("encrypter", "2012", $CALG_RC4)
ConsoleWrite(VarGetType($iTest) & @CRLF) ; affiche String
Je pense également qu'il n'y a pas de différence, puisque dans les deux cas le résultat est converti dans le type String et il est le même.
D'ailleurs, peut-être que
$iTest = String(_Crypt_EncryptData ("encrypter", "2012", $CALG_RC4))
fonctionnerait aussi.
Re: Ecriture dans une cellule EXCEL (Zone Encryptée)
Posté : mar. 11 juil. 2017 01:16
par jchd
Quant à la différence entre '0X" & Hex(...) et "" & _Crypt_EncryptData (...), il y en a pas (je pense) du fait que l'algorithme $CALG_RC4 produit une chaîne binaire représentée en hexa...
Pas du tout : _Crypt_EncryptData renvoie une valeur
binaire (VarGetType -> Binary), ce qui n'a rien à voir avec une chaîne.
On peut aussi comme juste dit faire un String(XXX).
Un variant binaire converti en chaîne par conversion implicite (donc hexa) se voit ajouter le préfixe "0x". Hex(XYZ) renvoie la chaîne hexa sans ce préfixe.