Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

probleme encryption requete SQL

4 réponses
Avatar
John Smith
Bonjour,

J'ai encrypter (AES 256 ) des données dans une table access que je veux
faire une requête ca plante (syntax error)
voici ma syntaxe Sql

ssql = "SELECT DefLevel.Level,"
ssql = ssql & " DefLevel.Toolbar,"
ssql = ssql & " DefLevel.Button,"
ssql = ssql & " DefLevel.MenuButton"
ssql = ssql & " FROM DefLevel"
ssql = ssql & " WHERE (((DefLevel.Level)='" & Encrypt(Combo1.Text) &
"') "
ssql = ssql & " AND ((DefLevel.Toolbar)='" & Encrypt(2) & "') "
ssql = ssql & " AND ((DefLevel.Button)='" & Encrypt(List2.listindex +
1) & "') "
ssql = ssql & " AND ((DefLevel.MenuButton)='" & Encrypt(tempi) & "'));"

voici le debug.print de sslq
SELECT DefLevel.Level, DefLevel.Toolbar, DefLevel.Button,
DefLevel.MenuButton FROM DefLevel WHERE (((DefLevel.Level)='µ*l
À9àó^×õºÖðZîHîMä7>ZÅhM£') AND
((DefLevel.Toolbar)=';Ô~õ¯íZ{ý̳Ô~X.kß;Û\ÊoªêO+
^I´{') AND ((DefLevel.Button)=';Ô~õ¯íZ{ý̳Ô~X.kß;Û\ÊoªêO+
^I´{') AND ((DefLevel.MenuButton)='/V>1'¯iGf
«ûz?yP*°<

4 réponses

Avatar
Fred
Dans : news:LWR2f.3369$,
John Smith disait :
Bonjour,

J'ai encrypter (AES 256 ) des données dans une table access que je
veux faire une requête ca plante (syntax error)
voici ma syntaxe Sql



Bonsoir,
Je ne connais pas le résultat d'un encryptage AES mais au vu des
«caractères» générés, il semblerait que les octets résultants du
cryptage soient vraiment aléatoires (de 0 à 255).
Donc difficilement stockables comme chaînes de caractères.
Sans compter (ce qui n'apparait pas sur l'exemple) qu'une apostrophe
peut venir se glisser dans le lot, et amener d'autres bugs.
Peut-être qu'il faudrait envisager un encodage base64 du tableau
d'octets généré par le cryptage pour n'avoir que des caractères compris
dans les intervalles 0..9, a..z, A..Z, +, / et =.
La taille de la chaîne augmente de ce fait de 30%.
Une petite recherche sur internet devrait fournir un algorithme
d'encodage que je n'ai pas sous la main (pas très compliqué).

Une autre méthode peut être d'enregistrer les valeurs hexa des octets
(doublement de la taille de la chaîne dans ce cas). Plus simple à
programmer.


--
Fred
http://www.cerbermail.com/?3kA6ftaCvT
Avatar
Jean-Marc
"Fred" a écrit dans le message de
news:
Dans : news:LWR2f.3369$,
John Smith disait :
> Bonjour,
>
> J'ai encrypter (AES 256 ) des données dans une table access que je
> veux faire une requête ca plante (syntax error)
> voici ma syntaxe Sql

Bonsoir,
Je ne connais pas le résultat d'un encryptage AES mais au vu des
«caractères» générés, il semblerait que les octets résultants du
cryptage soient vraiment aléatoires (de 0 à 255).
Donc difficilement stockables comme chaînes de caractères.
Sans compter (ce qui n'apparait pas sur l'exemple) qu'une apostrophe
peut venir se glisser dans le lot, et amener d'autres bugs.
Peut-être qu'il faudrait envisager un encodage base64 du tableau
d'octets généré par le cryptage pour n'avoir que des caractères compris
dans les intervalles 0..9, a..z, A..Z, +, / et =.
La taille de la chaîne augmente de ce fait de 30%.
Une petite recherche sur internet devrait fournir un algorithme
d'encodage que je n'ai pas sous la main (pas très compliqué).

Une autre méthode peut être d'enregistrer les valeurs hexa des octets
(doublement de la taille de la chaîne dans ce cas). Plus simple à
programmer.



Hello,

c'est bien de cela qu'il s'agit. On le voit sans le dernier AND,
il y a un caractère simple quote au beau milieu du texte.

L'encodage base 64 est surement la meilleure solution si on doit
stocker. Si on ne veut stocker qu'une "empreinte" des données,
stocker un hash MD5 pourrait suffire, ça dépend de l'utilisation
des données cryptées dans les champs.
Pour des mots de passe par exemple (et si on n'a pas besoin de
pouvoir retrouver l'original), un MD5 peut être une bonne idée.

--
Jean-marc
Tester mon serveur (VB6) => http://myjmnhome.dyndns.org
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ;
Avatar
Fred
Dans : news:434c0fe7$0$29057$,
Jean-Marc disait :

Hello,



Hello,


c'est bien de cela qu'il s'agit. On le voit sans le dernier AND,
il y a un caractère simple quote au beau milieu du texte.




T'as de bons yeux, je ne l'avais point vu :-)
Si c'est le seul point qui coince, alors l'utilisation des objets
Command et Parameters pourrait suffire. Mais j'ai quand même un doute
sur d'autres caractères.

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT
Avatar
John Smith
Bonjour,



Voici une façon qui permet d'utiliser des champs dans une table access
encrypté

Function Encrypt(strencrypt As String)
Dim aescrypt As New cAES -> classe d,encryption AES que l'on peut trouver
sur planetsourcecode
Encrypt = StrToHex(aescrypt.EncryptString(strencrypt, "pwd"))
End Function


Function Decrypt(strdecrypt As String) As String
Dim aescrypt As New cAES
Decrypt = aescrypt.DecryptString(HexToStr(strdecrypt), "pwd")
End Function

Public Function HexToStr(ByVal Data As String) As String
Dim Buffer As String

If Len(Data) Mod 2 <> 0 Then 'this would catch false input
HexToStr = vbNullString 'such as 776F3 <-- (well, maybe not false
input, but it would cause an error)
Else
For i = 1 To Len(Data) Step 2
Buffer = Buffer & Chr("&H" & Mid(Data, i, 2))
Next i
HexToStr = Buffer
End If
End Function


Public Function StrToHex(ByVal Data As String) As String
'This function will convert a string to hex...
Dim Buffer As String, Tmp As Variant

For i = 1 To Len(Data)
Tmp = Hex(Asc(Mid(Data, i, 1)))
Debug.Print Tmp
If Len(Tmp) < 2 Then
Buffer = Buffer & "0" & Tmp
Else
Buffer = Buffer & Tmp
End If
Next i

StrToHex = Buffer
End Function

"Fred" wrote in message
news:
Dans : news:434c0fe7$0$29057$,
Jean-Marc disait :

Hello,



Hello,


c'est bien de cela qu'il s'agit. On le voit sans le dernier AND,
il y a un caractère simple quote au beau milieu du texte.




T'as de bons yeux, je ne l'avais point vu :-)
Si c'est le seul point qui coince, alors l'utilisation des objets Command
et Parameters pourrait suffire. Mais j'ai quand même un doute sur d'autres
caractères.

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT