Le titre parle de lui même. Etant difficellement expliquable avec des mots je vous laisse regarder le code. Je souhaiterai un avis (bon comme mauvais) et surtout les explication de cet avis ...
Je voudrai savoir si quelqu'un avait une astuce aussi pour traiter de grosse chaine de fichier car j'ai quelque problème avec cela ...
Merci d'avance
Source / Exemple :
Public Function Crypt(ByRef Chaine As String, ByRef MotDePasse As String) As String
'Console.WriteLine("Crypt(" & Chaine & "," & MotDePasse & ")")
Dim LongeurChaine As Integer = Len(Chaine)
Dim LongeurMotDePasse As Integer = Len(MotDePasse)
Dim I As Integer
Dim Level1 As Integer
Dim Level2 As Integer
Dim Car As Byte
Dim Qbe As Byte
Dim I0 As Integer = 0
Dim I1 As Integer = 0
Dim I2 As Integer = 0
Dim I3 As Integer = 0
Dim J0 As Integer = 0
Dim J1 As Integer = 0
Dim J2 As Integer = 0
Dim J3 As Integer = 0
If LongeurMotDePasse = 0 Or LongeurChaine = 0 Then
Crypt = Chaine
Exit Function
End If
Crypt = New String(" ", LongeurChaine)
Dim HyperCube(3, 3, 3, 3, 3, 3, 3, 3) As Byte
GenHyperCube(HyperCube, MotDePasse)
Level1 = LongeurChaine Mod 256
Level2 = LongeurMotDePasse Mod 256
For I = 1 To LongeurChaine
'Console.Write("Position [" & New String("0", 3 - Len(Level1.ToString)) & Level1.ToString & "-")
'Console.Write(New String("0", 3 - Len(Level2.ToString)) & Level2.ToString & "] -> ")
' Niveau 1
I0 = Level1 \ 64
Level1 = Level1 Mod 64
I1 = Level1 \ 16
Level1 = Level1 Mod 16
I2 = Level1 \ 4
I3 = Level1 Mod 4
' Niveau 2
J0 = Level2 \ 64
Level2 = Level2 Mod 64
J1 = Level2 \ 16
Level2 = Level2 Mod 16
J2 = Level2 \ 4
J3 = Level2 Mod 4
Car = Asc(Mid(Chaine, I, 1))
Qbe = HyperCube(I0, I1, I2, I3, J0, J1, J2, J3)
'Console.Write("Car : " & New String("0", 3 - Len(Car.ToString)) & Car & " -> ")
'Console.Write("Qbe : " & New String("0", 3 - Len(Qbe.ToString)) & Qbe & " -> ")
'Console.Write("Xor : " & New String("0", 3 - Len((Car Xor Qbe).ToString)) & (Car Xor Qbe).ToString)
'Console.WriteLine("")
Mid(Crypt, I, 1) = Chr(Car Xor Qbe)
Level1 = Qbe
Level2 = Car
Next
End Function
Public Function UnCrypt(ByRef Chaine As String, ByRef MotDePasse As String) As String
'Console.WriteLine("UnCrypt(" & Chaine & "," & MotDePasse & ")")
Dim LongeurChaine As Integer = Len(Chaine)
Dim LongeurMotDePasse As Integer = Len(MotDePasse)
Dim I As Integer
Dim Level1 As Integer
Dim Level2 As Integer
Dim Car As Byte
Dim Qbe As Byte
Dim I0 As Integer = 0
Dim I1 As Integer = 0
Dim I2 As Integer = 0
Dim I3 As Integer = 0
Dim J0 As Integer = 0
Dim J1 As Integer = 0
Dim J2 As Integer = 0
Dim J3 As Integer = 0
If LongeurMotDePasse = 0 Or LongeurChaine = 0 Then
UnCrypt = Chaine
Exit Function
End If
UnCrypt = New String(" ", LongeurChaine)
Dim HyperCube(3, 3, 3, 3, 3, 3, 3, 3) As Byte
GenHyperCube(HyperCube, MotDePasse)
Level1 = LongeurChaine Mod 256
Level2 = LongeurMotDePasse Mod 256
For I = 1 To LongeurChaine
'Console.Write("Position [" & New String("0", 3 - Len(Level1.ToString)) & Level1.ToString & "-")
'Console.Write(New String("0", 3 - Len(Level2.ToString)) & Level2.ToString & "] -> ")
' Niveau 1
I0 = Level1 \ 64
Level1 = Level1 Mod 64
I1 = Level1 \ 16
Level1 = Level1 Mod 16
I2 = Level1 \ 4
I3 = Level1 Mod 4
' Niveau 2
J0 = Level2 \ 64
Level2 = Level2 Mod 64
J1 = Level2 \ 16
Level2 = Level2 Mod 16
J2 = Level2 \ 4
J3 = Level2 Mod 4
Car = Asc(Mid(Chaine, I, 1))
Qbe = HyperCube(I0, I1, I2, I3, J0, J1, J2, J3)
'Console.Write("Car : " & New String("0", 3 - Len(Car.ToString)) & Car & " -> ")
'Console.Write("Qbe : " & New String("0", 3 - Len(Qbe.ToString)) & Qbe & " -> ")
'Console.Write("Xor : " & New String("0", 3 - Len((Car Xor Qbe).ToString)) & (Car Xor Qbe).ToString)
'Console.WriteLine("")
Level2 = Car Xor Qbe
Level1 = Qbe
Mid(UnCrypt, I, 1) = Chr(Level2)
Next
End Function
Private Sub GenHyperCube(ByRef HyperCube(,,,,,,,) As Byte, ByVal MotDePasse As String)
Dim Cpt As Integer = 1
Dim I0 As Integer = 0
Dim I1 As Integer = 0
Dim I2 As Integer = 0
Dim I3 As Integer = 0
Dim J0 As Integer = 0
Dim J1 As Integer = 0
Dim J2 As Integer = 0
Dim J3 As Integer = 0
Dim LongeurMotDePasse As Integer = Len(MotDePasse)
Dim MonTab(255) As Integer
Dim Precedent As Integer = 0
Dim Suivant As Integer = 0
'FileOpen(1, "./cube", OpenMode.Output, OpenAccess.Write)
While Not I3 > 3
While Not J3 > 3
HyperCube(I0, I1, I2, I3, J0, J1, J2, J3) = _
( _
(I0 * 1) + _
(I1 * 4) + _
(I2 * 16) + _
(I3 * 64) _
) Xor ( _
Cpt Mod 256 _
) Xor ( _
Asc(Mid(MotDePasse, Cpt, 1)) _
) Xor ( _
(J0 * 1) + _
(J1 * 4) + _
(J2 * 16) + _
(J3 * 64) _
) Xor ( _
Precedent _
) Xor ( _
Suivant _
)
Precedent = Suivant
Suivant = HyperCube(I0, I1, I2, I3, J0, J1, J2, J3)
' Print(1, Chr(HyperCube(I0, I1, I2, I3, J0, J1, J2, J3)))
Cpt = Cpt + 1
If LongeurMotDePasse < Cpt Then
Cpt = 1
End If
J0 = J0 + 1
If J0 > 3 Then
J0 = 0
J1 = J1 + 1
End If
If J1 > 3 Then
J1 = 0
J2 = J2 + 1
End If
If J2 > 3 Then
J2 = 0
J3 = J3 + 1
End If
End While
J0 = 0
J1 = 0
J2 = 0
J3 = 0
I0 = I0 + 1
If I0 > 3 Then
I0 = 0
I1 = I1 + 1
End If
If I1 > 3 Then
I1 = 0
I2 = I2 + 1
End If
If I2 > 3 Then
I2 = 0
I3 = I3 + 1
End If
End While
'FileClose(1)
End Sub
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.