[R] Utilisation de System.Data.SQLite.dll

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
jpascal
Niveau 6
Niveau 6
Messages : 226
Enregistré le : jeu. 16 oct. 2008 16:21
Status : Hors ligne

[R] Utilisation de System.Data.SQLite.dll

#1

Message par jpascal »

Bonjour,

Je souhaite gérer une base de données chiffrée.
Pour cela, j'ai lu l'explication de jchd qui indique comment faire : https://www.autoitscript.com/forum/topi ... sqlitedll/

J'ai un problème dès le début du code :
#include <SQLite.au3> ; don't include sqlite.dll.au3 !!!
_SQLite_Startup("System.Data.SQLite.dll")
ConsoleWrite('Version ' & _SQLite_LibVersion() & @LF)

J'ai téléchargé toutes ces versions sur https://system.data.sqlite.org/index.ht ... loads.wiki :
  • sqlite-netFx46-binary-bundle-x64-2015-1.0.117.0
  • sqlite-netFx46-binary-x64-2015-1.0.117.0
  • sqlite-netFx46-static-binary-bundle-x64-2015-1.0.117.0
  • sqlite-netFx46-static-binary-x64-2015-1.0.117.0
  • sqlite-netStandard21-binary-1.0.117.0
Les fichiers ont été décompressés dans le même dossier que le script.
Aucun n'est reconnu (la version affiche 0).
Modifié en dernier par jpascal le ven. 21 avr. 2023 12:52, modifié 1 fois.
AutoIt 3.3.16.1 - AutoIt3Wrapper 21.316.1639.1
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2272
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Utilisation de System.Data.SQLite.dll

#2

Message par jchd »

Le support du chiffrement a été abandonné il y a longtemps.

A ma connaissance, la dernière version le supportant est System.Data.SQLite.dll v3.8.10.2 que je joins ici (X86).
System.Data.SQLite.dll.zip
(554.32 Kio) Téléchargé 463 fois
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
jpascal
Niveau 6
Niveau 6
Messages : 226
Enregistré le : jeu. 16 oct. 2008 16:21
Status : Hors ligne

Re: [..] Utilisation de System.Data.SQLite.dll

#3

Message par jpascal »

Merci pour le fichier. :-)
Cependant je ne peux pas le tester.
En effet j'ai toujours le numéro de version à 0 comme s'il ne détectait pas la dll.
Mon retour console :
Version 0
"C:\Dev\AutoIt\Tests\SQLite\SQLite encryption.au3" (16) : ==> Subscript used on non-accessible variable.:
ConsoleWrite($row[1] & @LF)
ConsoleWrite($row^ ERROR

Mon dossier contient uniquement le script suivant ainsi que la DLL que vous avez postée :
#include <SQLite.au3> ; don't include sqlite.dll.au3 !!!

_SQLite_Startup("System.Data.SQLite.dll")
ConsoleWrite('Version ' & _SQLite_LibVersion() & @LF)

Local $path = @ScriptDir & "\mydb.sql"
Local $row

; using encryption
_SQLite_Open($path)
_SQLite_Exec(-1, "pragma key = 'Radu is happy!';create table if not exists test (id integer, val text);" & _
      "insert into test values (1, 'abc');")
_SQLite_QuerySingleRow(-1, "select * from test;", $row)
ConsoleWrite($row[1] & @LF)
_SQLite_Close(-1)

; not using encryption over the encrypted DB gives a failure
_SQLite_Open($path)
_SQLite_QuerySingleRow(-1, "select * from test;", $row)
ConsoleWrite(_SQLite_ErrMsg(-1) & @LF)
_SQLite_Close(-1)

; changing back to no encryption
_SQLite_Open($path)
_SQLite_Exec(-1, "pragma key = 'Radu is happy!'")
_SQLite_Exec(-1, "pragma rekey = ''")
_SQLite_QuerySingleRow(-1, "select * from test;", $row)
ConsoleWrite($row[1] & @LF)
_SQLite_Close(-1)

_SQLite_Shutdown()
AutoIt 3.3.16.1 - AutoIt3Wrapper 21.316.1639.1
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2272
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Utilisation de System.Data.SQLite.dll

#4

Message par jchd »

Et comme ça ?

Code : Tout sélectionner

#include <SQLite.au3> ; don't include sqlite.dll.au3 !!!
ConsoleWrite(_SQLite_Startup(@ScriptDir & "\System.Data.SQLite.dll") & @LF)
ConsoleWrite('Version ' & _SQLite_LibVersion() & @LF)
La DLL est en 32 bit, donc script en X86 aussi.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
jpascal
Niveau 6
Niveau 6
Messages : 226
Enregistré le : jeu. 16 oct. 2008 16:21
Status : Hors ligne

Re: [..] Utilisation de System.Data.SQLite.dll

#5

Message par jpascal »

Au temps pour moi, je n'avais pas noté cette information ô combien importante.
En ajoutant la ligne #AutoIt3Wrapper_UseX64=N, le code fonctionne parfaitement.

Dommage que le développement ait été stoppé.

Encore merci pour la solution.
AutoIt 3.3.16.1 - AutoIt3Wrapper 21.316.1639.1
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2272
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [R] Utilisation de System.Data.SQLite.dll

#6

Message par jchd »

Le développement n'est absolument pas stoppé, bien au contraire.

L'équipe SQLite propose l'acquisition d'une licence pour une version avec chiffrement (SEE), destinée à de "riches" corporates. Ils ont supprimé les "hooks" du code permettant d'implémenter le [dé]chiffrement pour cette raison.

Sinon il existe des dérivations libres de SQLite avec chiffrement, telle SQLCipher et d'autres.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
jpascal
Niveau 6
Niveau 6
Messages : 226
Enregistré le : jeu. 16 oct. 2008 16:21
Status : Hors ligne

Re: [R] Utilisation de System.Data.SQLite.dll

#7

Message par jpascal »

J'ai compilé SQLCipher en version 3.41.2
L'exécutable obtenu semble fonctionner correctement. En revanche, l'utilisation de la DLL dans AutoIt ne crée pas de base chiffrée. :(

Output :
Version 3.41.2
abc
not an error
abc
A noter que j'ai obtenu une erreur lors de la compilation :
LINK : sqlite3.exe introuvable ou non généré par la dernière édition de liens incrémentielle ; édition de liens complète en cours
Je cherche... :?
AutoIt 3.3.16.1 - AutoIt3Wrapper 21.316.1639.1
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2272
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [R] Utilisation de System.Data.SQLite.dll

#8

Message par jchd »

Un petit exemple de code AutoIt qui ne procède pas au chiffrement serait utile pour avancer !
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2272
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [R] Utilisation de System.Data.SQLite.dll

#9

Message par jchd »

sqlite3.exe est un exécutable complètement distinct de la bibliothèque, l'utilitaire en ligne de commande. Ca doit être une cible secondaire du makefile de SQLCipher (que je n'ai jamais utilisé) utilisant la bibliothèque pour offrir le chiffrement.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
jpascal
Niveau 6
Niveau 6
Messages : 226
Enregistré le : jeu. 16 oct. 2008 16:21
Status : Hors ligne

Re: [R] Utilisation de System.Data.SQLite.dll

#10

Message par jpascal »

Au temps pour moi, je pensais l'avoir posté en entier dans mon premier message.

Code : Tout sélectionner

#include <SQLite.au3> ; don't include sqlite.dll.au3 !!!

_SQLite_Startup("sqlite3.dll")
ConsoleWrite('Version ' & _SQLite_LibVersion() & @LF)

Local $path = @ScriptDir & "\mydb.sqlite"
Local $row

; using encryption
_SQLite_Open($path)
_SQLite_Exec(-1, "pragma key = 'Radu is happy!';create table if not exists test (id integer, val text);" & _
		"insert into test values (1, 'abc');")
_SQLite_QuerySingleRow(-1, "select * from test;", $row)
ConsoleWrite($row[1] & @LF)
_SQLite_Close(-1)

; not using encryption over the encrypted DB gives a failure
_SQLite_Open($path)
_SQLite_QuerySingleRow(-1, "select * from test;", $row)
ConsoleWrite(_SQLite_ErrMsg(-1) & @LF)
ConsoleWrite($row[1] & @LF)
_SQLite_Close(-1)

; changing back to no encryption
_SQLite_Open($path)
_SQLite_Exec(-1, "pragma key = 'Radu is happy!'")
_SQLite_Exec(-1, "pragma rekey = ''")
_SQLite_QuerySingleRow(-1, "select * from test;", $row)
ConsoleWrite($row[1] & @LF)
_SQLite_Close(-1)

_SQLite_Shutdown()

Et le retour console :
Version 3.41.2
abc
not an error
abc
abc
AutoIt 3.3.16.1 - AutoIt3Wrapper 21.316.1639.1
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2272
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [R] Utilisation de System.Data.SQLite.dll

#11

Message par jchd »

Il faudrait déjà être certain que c'est bien la dll de SQLCipher qui a été chargée, par exemple en patchant le source pour afficher 3-41-2 et non 3.41.2 comme la dll SQLite. Il serait aussi préférable de nommer la dll autrement, par exemple sqlcipher3.dll
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Répondre