IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Contribuez Discussion :

Cryptage des données


Sujet :

Contribuez

  1. #1
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Points : 1 579
    Points
    1 579
    Par défaut [Source] Cryptage des données
    La commande Options Sécurité Coder/Décoder une base de données ne protège pas les données. Elle permet simplement d'éviter la lecture de la bdd à partir d'un éditeur de textes. Toutes les données du fichier .MDB crypté de cette manière restent accessibles via le Jet Engine. D'autre part, il est très rare que toutes les données soient confidentielles. Il est par conséquent trop onéreux de protéger toutes les données en implémentant la sécurité au niveau du groupe de travail. Il faut donc appliquer une technique de cryptage personnalisée simple, permettant de protéger suffisamment bien les données confidentielles quelles soient numériques ou alphabétiques. Le niveau de protection assuré doit en somme donner beaucoup de difficultés à un pirate pour casser le code. La technique présentée ci-après ne nécessite pas une clé externe, susceptible d'être perdue, ce qui rendrait les données indéchiffrables.
    Pour obtenir un code, qui ne peut pas être cassé par une analyse de fréquence d'apparition des caractères, il faut recourir à un algorithme qui autorise les substitutions multiples d'un caractère. A cet effet, on peut utiliser la rotation variable dont le principe est expliqué ci-après.
    Dans ce cas, la valeur du 1er signe est augmentée d'une valeur N, celle du 2ème est augmentée de N-1, celle du 3ème de N-2 et ainsi de suite jusqu'à zéro. Puis on recommence à ajouter 1, 2, ……, N-2, N-1 et N.
    Dans notre code N = 7.
    Exemples: fonction pour crypter et son corollaire pour décrypter

    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
     
    Option Compare Database
    Option Explicit
     
    Public Const CYCLE = 7
     
    Public Function Coder(chaine As String) As String
    Dim strTemp As String '*** contiendra la résultat du cryptage caractère par caractère.
    Dim i As Long '*** compteur de caractères du texte à protéger
    Dim q As Integer '*** stockage de la valeur ASCII
    Dim pt As String * 1 '*** texte normal à protéger
    Dim ct As String * 1 '*** texte chiffré
    Dim z As Integer '*** valeur du cycle de rotation
    Dim Step As Integer '*** pas d'incrémentation négatif ou positif
     
    z = CYCLE
    Step = -1
    For i = 1 To Len(chaine)
         pt = Mid(chaine, i, 1)
         q = Asc(pt)
         Select Case q
            Case Asc("A") To Asc("Z") '***Majuscules
               q = q + z
               If q > Asc("Z") Then
                  q = 64 + (q - Asc("Z"))
               End If
               ct = Chr(q)
           Case Asc("a") To Asc("z") '***Minuscules
              q = q + z
              If q > Asc("z") Then
                 q = 96 + (q - Asc("z"))
              End If
              ct = Chr(q)
          Case Else
         '***Ponctuation et chiffres:
              ct = Chr(q + z)
         End Select
         z = z + Step
         If z < 0 Then '***Démarre l'incrémentation positive
             z = 1
            Step = 1
         End If
         If z > CYCLE Then '***Démarre l'incrémentation négative
            z = CYCLE - 1
            Step = -1
         End If
         strTemp = strTemp & ct
    Next i
    Coder = strTemp
    End Function
     
    Public Function DeCoder(chaine As String) As String
    Dim strTemp As String
    Dim i As Long
    Dim ct As String * 1 '*** texte chiffré
    Dim pt As String * 1 '*** texte normal
    Dim q As Integer
     
    Dim z As Integer
    Dim Step As Integer
    z = CYCLE
    Step = -1
    For i = 1 To Len(chaine)
       ct = Mid(chaine, i, 1)
       q = Asc(ct)
       Select Case q
          Case Asc("A") To Asc("Z")
             '***Majuscules
             q = q - z
             If q < Asc("A") Then
                q = Asc("Z") - (64 - q)
             End If
             strTemp = strTemp & Chr(q)
          Case Asc("a") To Asc("z")
             '***Minuscules
             q = q - z
             If q < Asc("a") Then
                q = Asc("z") - (96 - q)
             End If
             strTemp = strTemp & Chr(q)
          Case Else
          '***Ponctuation et chiffres:
             strTemp = strTemp & Chr(q - z)
       End Select
       z = z + Step
       If z < 0 Then
          z = 1
          Step = 1
       End If
       If z > CYCLE Then
          z = CYCLE - 1
          Step = -1
       End If
    Next i
    DeCoder = strTemp
    End Function
    Bien entendu on peut aussi changer le pas d'incrément. On pourrait aussi renoncer à crypter tous les caractères, mais seulement 4 sur 5 par exemple..
    Amicalement

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Points : 1 579
    Points
    1 579
    Par défaut
    Autre possibilité que j'utilise

    Pour protéger ce type de données contre les assauts de pirates expérimentés, il faut les transformer à l'aide d'un algorithme travaillant au niveau de chaque bit. La technique proposée est d'appliquer l'opérateur booléen du Ou Exclusif (XOR) à la valeur binaire ASCII de chaque caractère des données à crypter, sur la base d'une phrase clé comportant le plus de signes différents (lettres, chiffres, signes de ponctuation). On a donc deux arguments en entrée de cet opérateur qui va produire un résultat: les données cryptées. Cet opérateur se prête particulièrement bien au cryptage car il est complètement réversible et symétrique. Il suffira donc d'appliquer le même algorithme avec la même phrase clé au texte crypté pour obtenir le texte normal d'origine. D'autre part, ce qui le rend difficile à décoder est le fait qu'on obtient le même résultat, dont la plupart des signes sont non affichables, à partir de nombreuses données différentes. Un pirate ne doit pas seulement connaître la valeur numérique des données cryptées, mais en plus il doit connaître la valeur binaire de la phrase clé.
    Dans un module standard, on place la fonction de cryptage suivante:

    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
     
    Public Function XOREncrypt(strTexteNormal As Variant, strPhraseClé As String)As String ' Objectif: Encryptage via l'addition booléenne Ou Exclusif au niveau de chaque bit du texte ' à crypter et du texte d'une phrase clé selon leur valeur ASCII. Dim lngLongueurPhraseClé As Long
    Dim i As Long ' Pour contrôler la boucle dans le texte normal à crypter
    Dim intMasque As Integer
    Dim lngPosCar As Long ' Pour contrôler la boucle dans la phrase clé
    lngLongueurPhraseClé = Len(strPhraseClé)
    If IsNull(strTexteNormal) Or lngLongueurPhraseClé = 0 Then 
    XOREncrypt = vbNullString
    Exit Function
    End If
    For i = 1 To Len(strTexteNormal)
    'Boucle à travers la phrase clé, réinitialise le compteur d'itérations quand on
    'atteint la fin de la phrase clé qui est en général plus courte que le texte à crypter: 
    lngPosCar = lngPosCar + 1
    If lngPosCar > lngLongueurPhraseClé Then 
    lngPosCar = 1
    End If
    'Détermine la valeur ASCII des caractères du masque de cryptage à partir de la phrase clé:
    intMasque = Asc(Mid(strPhraseClé, lngPosCar, 1))
    'Remplace un caractère du texte normal par son équivalent du masque XOR:
    Mid(strTexteNormal, i, 1) = _
    Chr(Asc(Mid(strTexteNormal, i, 1)) Xor intMasque)
    Next i
    'Retourne la chaîne cryptée:
    XOREncrypt = strTexteNormal
    End Function
    Amicalement

Discussions similaires

  1. cryptage des données
    Par rintchu dans le forum Administration
    Réponses: 7
    Dernier message: 20/02/2008, 16h38
  2. [Sécurité] Cryptage des données envoyées par le réseau
    Par DeusXL dans le forum Développement
    Réponses: 6
    Dernier message: 05/03/2007, 04h29
  3. [Crypt]Fonction simple de cryptage des données
    Par Agoye dans le forum Sécurité
    Réponses: 5
    Dernier message: 30/08/2006, 19h35
  4. Cryptage des données en natif
    Par claude dans le forum Oracle
    Réponses: 7
    Dernier message: 03/04/2006, 14h15
  5. Quiz : testez vos connaissances sur le cryptage des données
    Par SheikYerbouti dans le forum Oracle
    Réponses: 0
    Dernier message: 08/10/2004, 10h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo