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

Windows Forms Discussion :

mauvaise compréhension du "xor"


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2007
    Messages : 34
    Par défaut mauvaise compréhension du "xor"
    Bonjour à tous voilà, j'ai deux petites choses que je n'ai pas bien comprise
    par exemple l'utilisation du xor , voici le code qui permet d'enregistrer un fichier en le cryptant :

    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
     
    Dim letter As Char
            Dim strCode As String
            Dim i, charsInFile, Code As Short
     
            SaveFileDialog1.Filter = "Text files (*.txt)|*.txt"
            SaveFileDialog1.ShowDialog()
            If SaveFileDialog1.FileName <> "" Then
                strCode = InputBox("Enter Encryption Code")
                If strCode = "" Then Exit Sub 'if cancel clicked
                'save text with encryption scheme
                Code = CShort(strCode)
                charsInFile = txtNote.Text.Length
                FileOpen(1, SaveFileDialog1.FileName, OpenMode.Output)
                For i = 0 To charsInFile - 1
                    letter = txtNote.Text.Substring(i, 1)
                    'convert to number w/ Asc, then use Xor to encrypt
                    Print(1, Asc(letter) Xor Code) 'and save in file
                Next
                FileClose(1)
                mnuCloseItem.Enabled = True
            End If
    voici l'autre bouton qui permet d'ouvrir un fichier précédemment crypté

    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
    Dim ch As Char
            Dim strCode As String
            Dim Code, Number As Short
            Dim Decrypt As String = ""
     
            OpenFileDialog1.Filter = "Text files (*.TXT)|*.TXT"
            OpenFileDialog1.ShowDialog() 'display Open dialog box
            If OpenFileDialog1.FileName <> "" Then
                Try 'open file and trap any errors using handler
                    strCode = InputBox("Enter Encryption Code")
                    If strCode = "" Then Exit Sub 'if cancel clicked
                    Code = CShort(strCode)
                    FileOpen(1, OpenFileDialog1.FileName, OpenMode.Input)
                    Do Until EOF(1) 'read lines from file
                        Input(1, Number) 'read encrypted numbers
                        ch = Chr(Number Xor Code) 'convert with Xor
                        Decrypt = Decrypt & ch 'and build string
                    Loop
                    txtNote.Text = Decrypt 'then display converted string
                    lblNote.Text = OpenFileDialog1.FileName
                    txtNote.Select(1, 0)   'remove text selection
                    txtNote.Enabled = True 'allow text cursor
                    mnuCloseItem.Enabled = True  'enable Close command
                    mnuOpenItem.Enabled = False  'disable Open command
                Catch
                    MsgBox("Error opening file.")
                Finally
                    FileClose(1) 'close file
                End Try
            End If
    voilà j'ai remarqué que dans le bouton qui permettait d'enregistré, le xor permettait d'ajouter un nombre précédemment entré au code ASCII des lettres contenues dans le fichier tandis que dans le deuxième cas il permettait de retirer ce nombre , alors j'aimerais savoir Pourquoi il retire ce nombre dans le deuxième cas .
    J'ai trouvé aussi ce code expliquant un peu cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    MsgBox(Asc("A") Xor 50)
    MsgBox(115 Xor 50)
    le 1er message donnera 115 tandis que l'autre donnera 65 pourtant je ne vois pas trop ce qui a changé à part que dans le 1er cas la valeur numérique est obtenue à partir du code ASCII d'une lettre, alors j'aimerais savoir si c'est pour cela que dans le 1er cas il l'ajoute tandis que dans le 2e il le retire.

    et aussi la ligne :
    cela veut dire que le programme copie le fichier "1" en tant que Number?

    voila merci d'avance et bonne fin de journée :p
    essayez de donner des réponses claires merci^^

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    xor sert à faire un ou exclusif
    a xor b sera vrai si a est ou vrai ou b est vrai mais pas les 2 en meme temps

    xor peut etre utilisé aussi au niveau des bits d'un octet (comme dans ton exemple)

    dans ce cas c'est pareil au niveau des bits
    A 10010101 xor
    B 10110010
    =
    C 00100111

    et dans l'autre sens

    A 10010101 xor
    C 00100111
    =
    B 10110010

    on retombe sur B comme par magie
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

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