J’ai créé une base de données (mabase.db3) en utilisant le module (Sqlite3).et PyQt4 pour l’affichage des données sur un tableau.Jusque-là tout fonctionne bien (écriture,lecture, affichage)
Mais quand j’ouvre mabase.db3 avec un éditeur de texte (win32pad, Word pad) j’obtiens des caractères suivis des données de ma base et donc ce n’estpas un fichier crypté (on peut y accéder de l’extérieur et tirer quelques données)
Je veux savoir s’il y a un moyen de crypter les données et n’afficher que des caractères inconnus.

Voici un code que j’ai trouvé sur ce forum.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
import sys
import sqlite3
import random
from PyQt4 import QtCore, QtGui, QtSql 
#############################################################################
def creat():
    """ creation au hazard d'une chaine de caractere (taille de la chaine =8) """
    text=''
    for i in range(8):
        text+=chr(random.randint(65,123))
 
    return text
def creabasesql(basesql):
    """créer une base sql composée de 100 chaines de caracteres tirées au hasard"""
    cnx = sqlite3.connect(basesql)
    cur = cnx.cursor()
    cur.execute("""drop table if exists 'matable' """)
    cur.execute("""create table 'matable' (num integer)""")
    try:
        for i in range(1, 101):
            cur.execute("""insert into 'matable' values(?)""", 
                                                (creat(),))
        cnx.commit()
    except sqlite3.Error:
        cnx.rollback()
        print ("erreur: " , (unicode(err.args[0]),))
    cur.close()
    cnx.close()
 
#############################################################################
class MonModel(QtSql.QSqlRelationalTableModel):
    """permet au modèle de charger la table complète des données"""
    def select(self):
        results = QtSql.QSqlRelationalTableModel.select(self)
        while self.canFetchMore():
            self.fetchMore()
        return results
 
#############################################################################
class Vuetable(QtGui.QWidget):
    """fenêtre affichant une table d'une base de données SQL (sqlite3 ici)"""
 
    def __init__(self, basesql, table, parent=None):
        super(Vuetable, self).__init__(parent)
 
        # stocker les arguments
        self.basesql = basesql
        self.table = table
 
        # instructions pour la fenêtre
        self.resize(800, 600)
        self.setWindowTitle("table: %s de la base: %s" % (self.table, 
                                                                self.basesql))
 
        # ouvrir une connexion avec la base de données 
        self.cnx = QtSql.QSqlDatabase.addDatabase("QSQLITE")
        self.cnx.setDatabaseName(self.basesql)
        if not self.cnx.open():
            QtGui.QMessageBox.critical(self, 
                        "Ouverture de la base de données",
                        "Erreur d'ouverture: %s" % self.cnx.lastError().text())
            self.cnx = None
            self.close() # fermeture de vuetable
 
        # créer et configurer le modèle
        self.model = MonModel(self, self.cnx) # voir classe "MonModel" + haut
        self.model.setTable(self.table)
        self.model.setEditStrategy(QtSql.QSqlRelationalTableModel.\
                                                               OnManualSubmit)
        self.model.select() # méthode surchargée de la classe "MonModel"
 
        # créer le QTableView d'affichage
        self.vue = QtGui.QTableView(self)
 
        # créer le lien entre la base sql et le QTableView grâce au modèle 
        self.vue.setModel(self.model)
        self.vue.setItemDelegate(QtSql.QSqlRelationalDelegate(self.vue))
 
        # tri ascendant du tableau affiché selon la 1ère colonne
        self.vue.setSortingEnabled(True)
        self.vue.sortByColumn(0, QtCore.Qt.AscendingOrder)
 
        # régler la largeur des colonnes en fonction de leur contenu
        self.vue.resizeColumnsToContents()
 
        # faire que le QTableView prenne toute la fenêtre et suive la redim.
        posit = QtGui.QGridLayout()
        posit.addWidget(self.vue, 0, 0)
        self.setLayout(posit)
#############################################################################
if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    basesql = "mabase.db3"
    creabasesql(basesql)
    fen = Vuetable(basesql, "matable")
    fen.show()
    sys.exit(app.exec_())
Os Windows-XP, windows-7
Python 3.2
PyQt 4.9.6
Et merci pour toute réponse.