begin process at 2008 05 12 11:36:55
1 170 233 membres
135 nouveaux aujourd'hui
13 957 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

FAIRE UN VRAI ALGORITHME DE CRYPTAGE


Information sur la source

Catégorie :Tutoriaux Niveau : Débutant Date de création : 29/07/2002 Date de mise à jour : 23/08/2004 03:47:32 Vu / téléchargé: 27 858 / 1 613

Note :
9,59 / 10 - par 22 personnes
9,59 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (52)
Ajouter un commentaire et/ou une note

Description

Quelques aides pour obtenir un cryptage plutôt efficace.

Lorsque vous avez en projet de réaliser un algorithme de cryptage, définissez correctement son objectif :
- cryptage pour texte (ascii)
- cryptage pour fichier (binaire)
La différence entre un cryptage de texte et un cryptage de fichier est importante.

Le cryptage de texte doit être lisible après le cryptage : il s’agit de l’imprimer sur papier ou d’envoyer en tant que texte simple le message codé.

Le cryptage de fichier se contente de changer des octets. Le résultat est un nouveau fichier que l’on transférera uniquement sur support numérique (email, disquette, réseau, …)

Il est plus simple de créer un algorithme de cryptage de fichier car on utilise les fonctions mathématiques et logiques disponible dans l’ordinateur sans contraintes. Le cryptage de textes oblige à contrôler si le code ne sort pas de caractères « non imprimable » ou encore non prononçable. Le cryptage de textes peut aussi être intéressant dans la disposition du résultat : on peut présenter une suite de caractères, mais aussi des « pseudo-mots » ou encore une matrice de caractères… la présentation étant importante pour le décryptage…

La suite de ce guide s’intéresse au cryptage de fichiers.

Lorsque vous réfléchissez aux différentes étapes de l’algorithme de cryptage, pensez au décodage pirate. Pensez à la personne qui souhaite retrouver votre message. Pensez également qu’elle a accès à votre code source. Que faut-il en déduire ?
Mon algorithme prend la clé et réalise une opération octet par octet sur mon message, ce jusqu'à la fin de la clé puis recommence (tel que Vigénère). Il y a alors 255 possibilités par octet à tester pour décoder mon message, le tout élevé à la puissance du nombre d’octets de la clé (16 octets de clé donne 255^16 possibilités).
Pour casser un tel cryptage, il suffit de découvrir les 6 à 8 premiers octets. Cela crée environ 10^15 combinaisons à tester (environ 1 mois de calculs brute-force sur un ordinateur grand public).
Impressionnant, certes, mais lors du décodage on à recourt à certaines astuces. Astuces comme apprendre le comportement de l’algorithme, ou encore brûler des étapes de décryptage qui s’annulent ou rallonge inutilement le processus. Lors de cryptage de fichiers, si on sait a priori quel format de fichier est crypté, on sait quel seront les premiers octets, ce qui simplifie drastiquement les recherches !

Vérifions le comportement de l’algorithme dans ce petit test :

TEST : Comportement de l’algorithme de cryptage

Prendre comme clé :
A
Prendre comme texte :
AAAAAAAAAAAAAAAA


Si le résultat du cryptage est du type suivant :
0000000000000000
Cryptage en suite constante (type Xor simple). Tout décryptage nécessitera que 255 tests.
Si le résultat est du style :
13579ACEGIKMOQR
Fonction linéaire. En compensant cette fonction, le décryptage ne nécessitera que 255 tests, ou peut-être plus si la fonction dépend de la clé.

Si le résultat est :
eGy4yO5c9eoP71v
Pas d’indices. Essayez alors avec la clé suivante :
B


Si le résultat est :
fHz5zP6d0fpQ82w
Il y a un mélange mais un simple compteur incrémenté change les valeurs. En compensant le mélange, on peut réduire jusqu'à 65500 ou même 255 tests pour décoder.


Approfondissons le test.

Gardons notre texte, et prenons comme clé :
AAAA

Si le résultat est du style (peux parfois être plus discret):
Ed4tEs4tEs4tEs4t
Redondance cyclique, dépendant ou non de la clé. Le décodage se réduira sur une période, ou sur quelques caractères de début et fin de redondance. Cela permet de trouver facilement la clé.

Si votre algorithme ne se comporte pas comme dans ce test, alors vous avez déjà quelque chose de "présentable". Toutefois, il n’est pas qualifiable immédiatement de "sûr".



Faisons maintenant un autre test, celui du comportement au décryptage :
Cryptez votre texte en utilisant comme clé AAAA et comme texte AAAAAAAAAAAAAAAA.

Décryptons le message codé avec une clé approximative (situation de décodage en brute-force), avec une clé tel que AABA :
Si on obtient par exemple AA5dAAu7AA=HAA]# , cela montre que notre opération sur octet est très restrictive. Ainsi une clé partielle permet de dévoiler en parti le message, et un simple dictionnaire de mots croisés permet de retrouver le message ! (Ou dans le cas de fichiers, quelques indices sur le format d’origine suffisent).

D’autres comportements encore sont susceptibles d’être des pistes pour les casseurs de code, comme par exemple des groupes de caractères se répétant "au hasard". Plus discret encore, si on représente le message codé dans un graphique (en X l’offset et en Y la valeur de l’octet) et qu’on vois des périodicités complexes, polynomiales ou sinusoïdales, le casseur pourra compenser par leurs fonctions mathématiques inverse !


Maintenant, grâce aux tests de comportements de votre algorithme, vous pouvez en déduire les failles et les combler. Toutefois, calculez à chaque fois la variabilité qu’offre le cryptage. Brouillez aussi les pistes dans le code lui-même !


Exemple sur cet algorithme de consolidation :

La clé est dans le tableau mCle() de type Byte, cK le tampon de calcul
cK = &HAA
On initialise cK car si la clé vaux zéro, un cK égal à zéro aboutirai à zéro
For i = 1 To UBound(mCle())
cK = CLng(mCle(i)) + cK
En additionnant de façon cumulative, on assure une dépendance continue
If cK > 255 Then cK = cK - 255
mCle(i) = (cK Xor i)
On renforce le résultat avec l’offset de l’octet.
Next i
mCle(1) = mCle(1) Xor i
On modifie la premiere valeur

Cet algorithme augmente les possibilités de clés, car toutes clés de type "texte" (environ 64 possibilités par octet) sont alors étendues sur 255 possibilités par octet. Une attaque brute force est alors plus complexe.



Informations :

Un cryptage ne doit pas augmenter la taille du fichier d'origine (sauf pour l'arrondir au multiple de 2, 4, 8... au-dessus, selon le nombre de bits utilisés). Si votre algorithme double ou triple la longueur, ce n'est pas un cryptage : c'est un bogue! En effet, l'interêt d'un texte crypté est d'être quasiment identique à l'original de par la forme (longueur...), tout en étant incompréhensible.

Un cryptage sans clé s'appelle encodage, alors ne vous tromper pas dans l'énoncé de votre code source. Un encodage à la faculté d'être réversible sans clé, ce qui est pratique dans certaines applications, mais pas dans la sécurité.


Différence entre cryptage n bits et cryptage à clé de n bits :

Cryptage n bits :
L'algorithme utilise des blocs de n bits et réalise son processus de cryptage dessus. Par exemple, le cryptage de César ou Vigénère, transcrit en informatique, est sur 8 bits car il y a un travail que sur 1 octet à la fois.
Si on prélève des blocs de 4 octets et qu'on y réalise nos opérations, alors on a un cryptage 32bits. En utilisant la variable Long en VB, on peut faire du cryptage 32bits. Cela implique que pour décrypter, il faudra rechercher les possibilités sur ce bloc complet pour avoir le message en claire et non pas sur 1 seul octet du bloc. Du moins l'algorithme de cryptage dois être conçu ainsi.

Cryptage à clé de n bits :
Il s'agit en fait du nombre d'octets que la clé peut avoir, multiplié par huit. Si l'algorithme tronque la clé sur un nombre fini de bits, on indique ce nombre de bits.
La méthode Vigénère est donc un cryptage avec une clé étant au maximum aussi longue que le texte à codé, mais l'opération reste sur 1 octet à la fois. C'est un cryptage à clé variable, mais restera un cryptage 8bits.
Il est faux de penser que votre algorithme est puissant car il supporte jusqu'à 32 octets comme clé (256bits). Certes un brute force devra tester jusqu'à 256^32 (ou 2^256)  possibilités pour trouver la bonne clé, mais si vous réalisez une opération octet par octet comme Vigénère, des indices seront repérable réduisant considérablement la recherche.

Autres formes de cryptage :
Il existe des cryptage faisant des opérations avec les bits de début et de fin du texte, ou un tableau d'un taille spécifié en fonction de la longueur de la clé... (plutôt que de le faire "de proche en proche"). On ne peux pas les classer en tant que "cryptage n bits" puisque le travail sur les bits dépendent directement de la clé.
Ces cryptages exotiques doivent prouver leurs robustesse en indiquant la moyenne des possibilités pour un message donné. Il faut l'évaluer en regardant le code source...



Trucs et Astuces

Pour réussir le test de "bon ou mauvais algo", voici quelques outils/astuces/solution...

- La bordélisation
Prenons une suite d'espace " " (ce qui donne en hexa : 20 20 20 20 20 20). Avec un cryptage par décalage d'octet, 3 bit par exemple, on obtient en hexa : 23 23 23 23 23 23 ... hum et pourtant l'auteur appelle ça du cryptage? de toute évidence ça n'en est pas...
Faisons intervenir la bordelisation!
Une bordélisation peut être (et est souvent basé sur...) une liste de taille fixe (ou de taille défini par la clé), contenant des valeur pseudo-aléatoire, tel que l'arrondi de la fonction sinus (voir partie code).
Notre chaine linéaire "crypté" (20+3 20+3 20+3 20+3 20+3 20+3) devient après calcul (20+3+234 20+3+243, 20+3+142, 20+3+31, 20+3+6, 20+3+92) la suite (en hexa) 14 23 180 66 41 127 : Youpi plus de redondance linéaire !!
Dans l'exemple CrypteTest (voir partie code), on réalise un test pour vérifié si on ne dépasse pas 255. Pourtant on peut éviter ce test... en faisant quoi ? simple : plutôt que de faire une addition (char+decalage+alea), on utilise Xor! cette fonction logique réversible permet de rester sur le même nombre de bits qu'avant : ((char Xor decalage) Xor alea) ne dépassera jamais 255 et ne sera jamais inférieur à 0 (et d'ailleur il y a peu de chance que ce soit un jour égal à zéro...) ... faites des essais...

- faire plusieurs passes :
Dans le cas de CryptTest, on ne fait qu'une seule passe. Mais on peux très bien se servir de la valeur n d'un caractère d'une clé pour faire autant de passe que cette valeur n. Attention toutefois si vous utiliser Xor (car utiliser 2 fois Xor avec les même valeurs rétabli le résutat d'avant : ben oui, c'est pour décrypter...). L'astuce est donc la suivante : alors qu'on fait les n passes, on change constament de valeur aléatoire.... (voir code, CryptTest2())

- Le BitShift (improprement appelé décalage de bit; c'est en fait : rotation de bit)
Au lieu de faire un décalage sur un octet, faites-le donc sur la valeur binaire d'un octet (ou sur la valeur binaire de plusieurs octets). Ca modifie énormément le résultat si le décalage est de 3 ou 6 bits... (voir BitShiftLeft dans le code)



Rappelons le dernier point qui permet de savoir si on a un bon algo :
- une infime différence de clé et/ou de texte doit créer un texte crypté totalement nouveau (et réciproquement, un texte crypté ayant un seul octet différent de l'original doit être incompréhensible)
Pour que ce comportement soit possible, il existe plusieurs solutions. Je ne parlerai que d'une solution, la plus simple à mes yeux :

La consolidation :
Pour qu'une infime différence change tout le résultat, il faut que chaque octet soi dépendant les uns des autres. Il faut donc réaliser une opération sur l'ensemble du texte à crypter : c'est une sorte de consolidation du texte.
Il faut impérativement vous servir de votre clé pour cette consolidation, sinon elle ne servira a rien puisque un piratin commençera par décoder la consolidation avant de décrypter!
C'est une étape assez difficile. Cet algorithme de consolidation, pour être valide, doit passer le test suivant :
r$ = Consolidation("AAAAAAAAAAAA")
admettons que r$ = "AdsfDgKu"
modifions un seul caractère (en faisant un décalage de "f" vers "e" par exemple)
r$ = "AdseDgKu"
l$ = DeConsolidation(r$)
Si l$ = "AAACBAAA", alors l'encodage de consolidation est franchement nul
Si l$ = "AABxRdEh", l'encodage de consolidation est mauvais (une partie de l'original est reconstitué/able)
Si l$ = "xCreGtER", bravo, vous avec une bonne consolidation!

Si vous commençer par l'algorithme de consolidation, vous aurez l'impression que votre cryptage est bon : il passera le test en début de ce tutorial sans trop de problèmes. L'encodage de consolidation est une assurance de complexifié le décryptage, mais attention car vous en publiez la source. Cet encodage dois donc être "non réversible" pour la clé, ou encore placé astucieusement pour qu'il ne soit pas une étape inutile lors du décodage (à vous de voir...).


-Le Checksum (ou le Digest, ou le Hash) :
C'est un numéro unique généré à partir d'un texte. Ce numéro dois être très sensible à toutes modifications de caractères. Contrairement à la consolidation, un checksum n'est par réversible : le numéro obtenu ne permet par de reconstituer le texte.
Utiliser le checksum pour initaliser le décalage de bit, la bordélisation ou les passes...




Note "légale" :
Attention! pour des raisons de sécurité d'Etat, la législation de votre pays peut restreindre l'utilisation du cryptage. Généralement la loi indique le nombre de bits maximales que l'algorithme gère (cryptage n bits). Pour éviter touts problèmes, renseignez-vous à la Mairie (en France, la CNIL est en charge de l'application de cette législation). en 2002 une personne ne devait pas utiliser d'algorithmes de plus de 128bits pour crypter ses données.

Source

  • 'Juste deux petite fonctions très très utile pour crypté :
  • 'La conversion valeur => binaire...
  • Function ValToBinString(ByVal Vl As Byte) As String
  • For i = 0 To 7
  • c = Vl Mod 2
  • If c > 0 Then
  • c = 1
  • Vl = (Vl - 1) / 2
  • Else
  • Vl = Vl / 2
  • End If
  • ValToBinString = CStr(c) & ValToBinString
  • Next i
  • End Function
  • '...et la conversion binaire => valeur
  • Function BinToVal(Sbit As String) As Byte
  • For i = 1 To 8
  • BinToVal = BinToVal + (2 ^ (8 - i)) * Val(Mid(Sbit, i, 1))
  • Next i
  • End Function
  • 'Bordélisation :
  • Sub GenAlea(ByRef TblDeSortie() As Byte)
  • ReDim TblDeSortie(1 To 128) As Byte
  • 'génère une suite pseudosinusoidale pour éviter les redondance linéaire
  • For i = 1 To 128
  • TblDeSortie(i) = CByte(Int(Sin(i) * 127) + 128)
  • Next i
  • End Sub
  • 'exemple bordéliseur du tutorial :
  • Sub CrypteTest()
  • Dim TableAlea() As Byte
  • GenAlea TableAlea()
  • TestString$ = Space$(6)
  • For i = 1 To Len(TestString$)
  • Calc = Asc(Mid(TestString$, i, 1)) + 3 + TableAlea(i)
  • If Calc > 255 Then Calc = Calc - 255
  • StrCrypte$ = StrCrypte$ & Chr$(Calc)
  • Next i
  • End Sub
  • 'Plusieurs Passes, en fonction de la clé
  • Sub CrypteTest2(Cle As String)
  • Dim TableAlea() As Byte
  • GenAlea TableAlea()
  • a = 0
  • TestString$ = Space$(6)
  • For i = 1 To Len(TestString$)
  • For k = 0 to Asc(Mid(Cle,i,1))
  • a = a + 1
  • If a > Ubound(TableAlea) Then a = 1
  • Calc = Asc(Mid(TestString$, i, 1)) Xor 3 Xor TableAlea(a)
  • Next k
  • StrCrypte$ = StrCrypte$ & Chr$(Calc)
  • Next i
  • End Sub
  • 'le BitShift
  • Private Sub BitShift(myByte As Byte, ByVal Decalage As Long)
  • 'décalage de bit dans 1 byte
  • Dim eBit(1 To 8) As Long, r As Long
  • Dim i As Long
  • 'conversion octet vers bits (les bits sont dans un tableau)
  • eBit(1) = Abs(CBool(myByte And 128))
  • eBit(2) = Abs(CBool(myByte And 64))
  • eBit(3) = Abs(CBool(myByte And 32))
  • eBit(4) = Abs(CBool(myByte And 16))
  • eBit(5) = Abs(CBool(myByte And 8))
  • eBit(6) = Abs(CBool(myByte And 4))
  • eBit(7) = Abs(CBool(myByte And 2))
  • eBit(8) = Abs(CBool(myByte And 1))
  • 'décale "vers a gauche" ou "vers la droite" selon la valeur de Decalage
  • If Decalage > 0 Then
  • For i = 1 To Decalage
  • r = eBit(8): eBit(8) = eBit(7): eBit(7) = eBit(6): eBit(6) = eBit(5)
  • eBit(5) = eBit(4): eBit(4) = eBit(3): eBit(3) = eBit(2): eBit(2) = eBit(1): eBit(1) = r
  • Next i
  • ElseIf Decalage < 0 Then
  • For i = 1 To Abs(Decalage)
  • r = eBit(1): eBit(1) = eBit(2): eBit(2) = eBit(3): eBit(3) = eBit(4): eBit(4) = eBit(5)
  • eBit(5) = eBit(6): eBit(6) = eBit(7): eBit(7) = eBit(8): eBit(8) = r
  • Next i
  • End If
  • 'conversion bits vers octet
  • myByte = (2 ^ 7) * eBit(1) + (2 ^ 6) * eBit(2) + (2 ^ 5) * eBit(3) + (2 ^ 4) * eBit(4) + _
  • (2 ^ 3) * eBit(5) + (2 ^ 2) * eBit(6) + (2 ^ 1) * eBit(7) + (2 ^ 0) * eBit(8)
  • End Sub
  • 'CheckSum
  • Function XorCheck(TxZ As String) As Long
  • Dim Mediat As Long
  • Mediat = Val("&h" & Left(Hex(Len(TxZ)) & "0", 2) & "&")
  • For i = 1 To Len(TxZ)
  • Mediat = i + Mediat + Mediat Xor Asc(Mid(TxZ, i, 1))
  • Next i
  • XorCheck = Mediat
  • End Function
  • 'Dans le zip vous aurez un exemple d'utilisation de ces petits algos
'Juste deux petite fonctions très très utile pour crypté :
'La conversion valeur => binaire...
Function ValToBinString(ByVal Vl As Byte) As String
  For i = 0 To 7
    c = Vl Mod 2
    If c > 0 Then
      c = 1
      Vl = (Vl - 1) / 2
    Else
      Vl = Vl / 2
    End If
    ValToBinString = CStr(c) & ValToBinString  
  Next i
End Function

'...et la conversion binaire => valeur
Function BinToVal(Sbit As String) As Byte
  For i = 1 To 8
    BinToVal = BinToVal + (2 ^ (8 - i)) * Val(Mid(Sbit, i, 1))
  Next i
End Function

'Bordélisation :
Sub GenAlea(ByRef TblDeSortie() As Byte)
  ReDim TblDeSortie(1 To 128) As Byte
  'génère une suite pseudosinusoidale pour éviter les redondance linéaire
  For i = 1 To 128
    TblDeSortie(i) = CByte(Int(Sin(i) * 127) + 128)
  Next i
End Sub
'exemple bordéliseur du tutorial :
Sub CrypteTest()
  Dim TableAlea() As Byte
  GenAlea TableAlea()
  TestString$ = Space$(6)
  For i = 1 To Len(TestString$)
    Calc = Asc(Mid(TestString$, i, 1)) + 3 + TableAlea(i)
    If Calc > 255 Then Calc = Calc - 255
    StrCrypte$ = StrCrypte$ & Chr$(Calc)
  Next i
End Sub

'Plusieurs Passes, en fonction de la clé
Sub CrypteTest2(Cle As String)
  Dim TableAlea() As Byte
  GenAlea TableAlea()
  a = 0
  TestString$ = Space$(6)
  For i = 1 To Len(TestString$)
    For k = 0 to Asc(Mid(Cle,i,1))
      a = a + 1
      If a > Ubound(TableAlea) Then a = 1
      Calc = Asc(Mid(TestString$, i, 1)) Xor 3 Xor TableAlea(a)
    Next k
    StrCrypte$ = StrCrypte$ & Chr$(Calc)
  Next i
End Sub

'le BitShift
Private Sub BitShift(myByte As Byte, ByVal Decalage As Long)
'décalage de bit dans 1 byte
Dim eBit(1 To 8) As Long, r As Long
Dim i As Long

    'conversion octet vers bits (les bits sont dans un tableau)
    eBit(1) = Abs(CBool(myByte And 128))
    eBit(2) = Abs(CBool(myByte And 64))
    eBit(3) = Abs(CBool(myByte And 32))
    eBit(4) = Abs(CBool(myByte And 16))
    eBit(5) = Abs(CBool(myByte And 8))
    eBit(6) = Abs(CBool(myByte And 4))
    eBit(7) = Abs(CBool(myByte And 2))
    eBit(8) = Abs(CBool(myByte And 1))
    
    'décale "vers a gauche" ou "vers la droite" selon la valeur de Decalage
    If Decalage > 0 Then
        For i = 1 To Decalage
            r = eBit(8): eBit(8) = eBit(7): eBit(7) = eBit(6): eBit(6) = eBit(5)
            eBit(5) = eBit(4): eBit(4) = eBit(3): eBit(3) = eBit(2): eBit(2) = eBit(1): eBit(1) = r
        Next i
    ElseIf Decalage < 0 Then
        For i = 1 To Abs(Decalage)
            r = eBit(1): eBit(1) = eBit(2): eBit(2) = eBit(3): eBit(3) = eBit(4): eBit(4) = eBit(5)
            eBit(5) = eBit(6): eBit(6) = eBit(7): eBit(7) = eBit(8): eBit(8) = r
        Next i
    End If
        
    'conversion bits vers octet
    myByte = (2 ^ 7) * eBit(1) + (2 ^ 6) * eBit(2) + (2 ^ 5) * eBit(3) + (2 ^ 4) * eBit(4) + _
             (2 ^ 3) * eBit(5) + (2 ^ 2) * eBit(6) + (2 ^ 1) * eBit(7) + (2 ^ 0) * eBit(8)

End Sub

'CheckSum
Function XorCheck(TxZ As String) As Long
Dim Mediat As Long
Mediat = Val("&h" & Left(Hex(Len(TxZ)) & "0", 2) & "&")
For i = 1 To Len(TxZ)
    Mediat = i + Mediat + Mediat Xor Asc(Mid(TxZ, i, 1))
Next i
XorCheck = Mediat
End Function

'Dans le zip vous aurez un exemple d'utilisation de ces petits algos     

Conclusion

Voila, j'espère qu'avec ceci, vous aurez envie de vous creuser la tête pour faire des algos bien balèze ;)
Dans le zip, vous trouverez toutes les fonctions d'exemples, ainsi que beaucoup d'autres, le tout utilisé dans un algorithme de cryptage pour exemple (tout ça fait maison, bien sur).
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

23 août 2004 03:47:33 :
Rajout de quelques pistes, ainsi que d'un algorithme de consolidation. 1/3 du guide est réécrit.
  • signaler à un administrateur
    Commentaire de babboss le 29/07/2002 18:03:14

    g apris pas mal de truc en lisant sa mais en ci concerne les 32bits et 128 bits et 21554786578 bits g pas bien tout compris !!!!!

  • signaler à un administrateur
    Commentaire de PtitJeoJeo le 29/07/2002 21:06:39

    moi g créer un prog d' "ENCODAGE" (moi ki croyé ke c t du cryptage ! ;-) )
    ben en fait la principale qualité c que pour une mem chaine de caracter il crypte pa pareil donc plusieur millier (selon la taile d texte !!!) de facon de crypter !!
    si tu ve aller voir ma source est la : http://www.vbfrance.com/article.aspx?Val=4777
    dis m'en des nouvelles (critiques ou points fort !!!)
    PtitJeoJeo

  • signaler à un administrateur
    Commentaire de diablotin le 29/07/2002 21:14:07

    Arrete de critiquer mec c'est pas bon pour ta santé pis ton super clé de cryptage fait la pis mait la source ,...

  • signaler à un administrateur
    Commentaire de Alain Proviste le 29/07/2002 21:43:40 administrateur CS

    This is extremely interressant, aber ich habe the same thing in a book. Es ist ein gut work. ( un gros pour ceux qui parle ni allemand ni français c'est cooooooooooooooool et tout le monde devrait lire ça avant de vouloir faire un quelconque prog de sécurité. )

  • signaler à un administrateur
    Commentaire de Alain Proviste le 29/07/2002 21:47:30 administrateur CS

    Mais c'est byzarre quand même que tu dises que les Xor et compagnie ça vaut pas une vieille paire de chaussettes trouées et qu'ensuites tu en parles dans le code...

  • signaler à un administrateur
    Commentaire de Alain Proviste le 29/07/2002 21:47:56 administrateur CS

    Des Xors, pas des chaussettes...

  • signaler à un administrateur
    Commentaire de OphidiaN le 29/07/2002 22:19:29

    :)
    vb n'est pas en mesure de crypter rapidement ....
    ça c sûr :)

  • signaler à un administrateur
    Commentaire de Proger le 30/07/2002 00:06:27

    Réponse à ptitjeojeo :
    Résultat impressionnant, mais :
    - c'est, en effet, de l'encodage et pas du cryptage
    - je note une redondance cyclique : ça a echoué au test de ce tutorial...

  • signaler à un administrateur
    Commentaire de max12 le 30/07/2002 00:36:41 administrateur CS

    Ya pas a dire, c'est très interressant

  • signaler à un administrateur
    Commentaire de Jackboy le 30/07/2002 00:45:53

    test base dans le cryptage vienne d'où ? T'a l'air à connaitre pas mal sur le sujet et où ta un bon site de référence. Non mais pas mal comme tut, un peu dure à comprendre quand tu connais pas trop le cryptage.

  • signaler à un administrateur
    Commentaire de Proger le 30/07/2002 01:07:44

    Jackboy : Mes bases? Ben heu c'est juste que j'aime bien casser les pieds de ceux qui font des algo de cryptage avec mon petit test à la c..
    Et la seule personne qui a développé un aglo capable de passer mon test, ben elle a mis 2 mois a le faire, 5h par jour (et en plus c'est un matheux, ce gars)
    Alors quand je lui ai demandé comment il a fait, il me l'as dit... ça commence par "énigma..." et sa fini par "...matrice complexe" .

  • signaler à un administrateur
    Commentaire de pirate75000 le 30/07/2002 10:05:42

    Juste une question,
    Les resultat d'encryptage changent-ils en fonction du systeme d'exploitation (Wim98, ME, NT, 2000)

  • signaler à un administrateur
    Commentaire de TeKiT le 30/07/2002 10:11:33

    Le principe de cryptage est aussi de pouvoir décrypter et dans un temps à peu près correcte pour u utilisateur .....
    Donc attention aux temps de calculs, il faut se dire qu'un cryptage de documents de 100 pages ne doit pas exéder 10sec  (et encore je suis tolérent)....

  • signaler à un administrateur
    Commentaire de Alain Proviste le 30/07/2002 10:53:51 administrateur CS

    10sec pour 100 pages chez chaud en vb, surtout pour un bon cryptage.
    Mais si y en a d'autre qui cherchent des infos, ils existent plein de livre sur ce sujet.

  • signaler à un administrateur
    Commentaire de Skywalker13 le 30/07/2002 13:56:25

    Proger : comment expliques-tu les erreurs avec ton prog lors d'un rcyptage supérieur à 16 bits ?

  • signaler à un administrateur
    Commentaire de ShOrtX le 30/07/2002 14:31:12

    Très intéressant et surtout très instructif !!!!

    Merçi de partager tes connaissances.

  • signaler à un administrateur
    Commentaire de Proger le 30/07/2002 16:37:00

    pirate7500 : non. Les seuls facteurs influençant un cryptage sont :
    - le CPU : un 386 ne fais pas des calculs aussi préçis q'un P4, et cela peux influencer s'il y a de la trigonométrie dans le cryptage. (entre un athlon et un p3, la diff est moindre, mais pas inexistante.)
    - la version de la dll de VB ;) pareil que pour le cpu, il est possible que les fonctions mathématique qui sont dans les dlls varient un peu au cours des mises à jours.

    Skywalker13 : a première vu je ne sais pas, mais je suppose que c'est un petit décalage dans le tableau Alea() lorsque SizeOctet dépasse 2 ... comme quoi un cryptage 32 bits c'est pas facile!

    Et pour finir, je dirais que plus un décryptage est long, plus on peut supposer qu'il sera dur à casser en brute force. Moi ça ne me gêne pas si le cryptage de 100 pages dure 2 minutes, si je suis sûr que même la NSA pourra pas lire la doc!

  • signaler à un administrateur
    Commentaire de safireevil le 30/07/2002 17:12:22

    tout ce que j'ai a dire c'est que t'as l'air vraiment balaise !!!
    j'aimerai savoir quels sont les exemples de cryptage du site que tu trouve seieux.
    merci, @++

  • signaler à un administrateur
    Commentaire de Patrice99 le 31/07/2002 10:21:01

    A mon avis, il ne devrait y avoir vraiment aucune différence de résultats de calcul lorsque l'on change de processeur, cela ne devrait dépendre que du language : en VB, si tu n'actives pas les optimisations de compilation liées au processeur, je suis sur que les calculs seront identiques : ne pas confondre la programmation en VB et l'assembleur : c'est fait justement pour eviter ca. Me trompé-je ?
    Sur le fond, je cherche un algo de cryptage symmétrique performant dont la robustesse ne souffrirait pas d'une publication de son code, comme pour les algos à clés assymétriques : est-ce que cela est possible ? c'est pour mon code :
    VBLOCKER : PROTÉGEZ VOTRE APPLICATION COMMERCIALE
    www.vbfrance.com/article.aspx?Val=4123

  • signaler à un administrateur
    Commentaire de Proger le 01/08/2002 19:35:47

    safireevil : rc4, rsa et cryptanalyser, et mon mien (lol)
    Patrice99 : hé ben dans des calculs très précis (jouant sur la 15ème décimale d'un variable Double) j'ai constaté des différences entre vb4 et vb6, (respectivement sur un p233 et l'autre sur un k7-1200). Les fonctions mathématiques standard sont directement traité par l'ALU du cpu, donc vb ne va pas faire une couche logicielle pour refaire ce que fait les cpu depuis que les co-processeur math' existe (inventé peu après le 386, puis intégré au cpu depuis le 486dx pour ceux qui savaient pas)

    sinon, c'est quoi ça, cryptage symmétrique et assymétrique? désolé... moi, je crypte pour que personne puisse décrypter. Les finesse du vocabulaire des cryptologues, je ne les connais pas.

  • signaler à un administrateur
    Commentaire de Skywalker13 le 07/12/2002 10:16:29

    Le cryptage symétrique (cryptage à clef secrète) utilise une même clef et un algorithme de cryptage pour crypter et décrypter un document..

    par contre le cryptage asymétrique (une paire de clé mathématiquement liée).. dont la pair est composée d'une clé privée et d'une clef publique. En bref tu cryptes avec la clef publique et tu décrypte avec la clef privée.. la clef publique tout le monde peut la connaitre mais il est impossible de l'utiliser pour décrypter.

    Après tu peux compliquer le tout en utilisant les deux méthodes.. le cryptage se ferait par exemple avec une ou plusieurs clefs secrètes (symétrique) et l'échange des clefs secrètes se ferait par un cryptage asymétrique.

  • signaler à un administrateur
    Commentaire de kybla le 17/12/2002 15:13:09

    Le cryptage bi-dimensionnel est de toutes évidences beaucoup plus puissant! On peut alors imaginer des cryptage tri ou quad-dimensionnel, un tableau de 4x4x4x4, soit 2048 bits...

    En connaissance de cause je te dis avec certitude que tu dis n'importe quoi. J'aimerai te voir un cryptage comme celui que tu dis . Puis au cas ou tu ne le saurais pas le cryptage en france au dessus de 128 bytes est interdit meme pour un usage personnel ( d'ou notre SSF adaptation aux norme francaise du SSL ) tu serais tres vite repéré avec de tels pratiques et les conséquences peuvent être tres lourdes.
    Evite de dire des bétises sur les domaines que tu n'as pas l'air de connaitre.

  • signaler à un administrateur
    Commentaire de taikun le 17/12/2002 16:41:37

    Je pense qu'il a dit assez de choses interessentes pr qu'on evite de lui cracher dessus mm s'il fait une erreur... je pense qu'il y a des moyens diplomates pr essayer de s'expliquer au lieu de vouloir se mettre tjs au dessus des autres...

    Sinon je méditerais sur tout ce qui a été dit étant plus frais... merci pr l'explicartion et le code ;)

    Ps: as tu un site de référence ? (mm en anglais)

  • signaler à un administrateur
    Commentaire de Proger le 17/12/2002 18:50:03

    kybla : sur papier le 2048 bits est plus difficile a cassé que le 128 bits, quant à la méthode utilisé pour faire du bi ou tri-dim, c'est aux matheux de plancher la-dessus! Nous programmeurs ne faisons que transcrire des algorithmes (et moi je ne suis qu'amateur autodidacte!) Si tu es un pro, je t'invite a rédiger un tutorial :)
    Et oui, je rappelle dans ce tutorial que en France utiliser un algo au-delà de 128bits est interdit, c'est écrit noir sur blanc! Lisez!
    Mais comme dit le dictons : pas vu, pas pris. C'est une logique d'obscurantisme, choisissez votre camp!

    Note : j'ai une énorme faille dans mon algo, un moyen simple de récupérer une partie du texte crypté avec une clé partielle!! ceci est dû au fait que mon texte n'est pas "consolidé" avant d'être crypté. Zut!

  • signaler à un administrateur
    Commentaire de schade le 21/05/2003 17:03:58

    Aprés avoir lu tout ça, je me rend compte que mon programme de cryptage est ... à chier... Snif, je vais quand même le laisser pour dire que j'ai un code à mon actif. hein ?

  • signaler à un administrateur
    Commentaire de yoman64 le 21/05/2003 18:30:30

    Je crois bien que mon cryptage est pratiquement incassable mais bon,il double la taille du texte desfois c triple ou 2.5...

  • signaler à un administrateur
    Commentaire de skram666 le 20/06/2003 09:41:43

    Ouais bah moi je me rend conte que mon algorythme c'est de l'encryptage en gros......mais bon moi il fo 2 cle une de 8bits et une de nopmbre de bits choisis par l'utilisateur sa sa'ppelle comment... ???
    Je ne suis pas un pro de la cryptographie mais avec ce que je viens de lire je peux renomer ma source et l'appelller encryptage quoi!!!!
    merci
    pour ce tuto c genial
    @+
    skram

  • signaler à un administrateur
    Commentaire de moffer le 18/07/2003 00:38:55

    pourrai tu nous faire un ptit tuto sur le cryptage par fonction elliptique ?
    ca m'interesserai beaucoup d'en savoir plus et je ne trouve pas vraiment de documentation précise à ce sujet........

    merci
    @+

  • signaler à un administrateur
    Commentaire de Proger le 02/08/2003 12:17:44

    non, sur le cryptage a courbe elliptique (y^2 = x^3 + ax + b) j'en sais autant que google. Il faut voir si on peut trouver une thèse sur le sujet : c'est idéal pour ce genre de recherche.

  • signaler à un administrateur
    Commentaire de Vb Lover le 16/09/2003 23:05:16

    Toute cette lecture sur le cryptage m'a donné envie de faire un programme qui décrypte, et non qui crypte! On pourrait ainsi faire le test des bons ou des (très) mauvais codes... dès que j'ai du temps, je mis attèle!

  • signaler à un administrateur
    Commentaire de Fildomen le 05/01/2004 18:13:51

    je sais pas est-ce-que mon prog est bon, il crypte même les images:
    donne moi ton avi,please:
    http://www.fildomen.fr.tc
    ouvre la page sources, puis cryptage.please, please,please,please.
    merci!!!!
    tu peux laisser les commentaires dans le forum du site.c'est rapidos.

  • signaler à un administrateur
    Commentaire de bigbourin le 12/04/2004 23:29:33

    Ya pas a dire t'en connais un paquet
    et comparer a mon "algo" de merde ton prog vaut quelque choses

  • signaler à un administrateur
    Commentaire de Light Angel le 02/07/2004 20:30:06

    Bein moi g créer un algo d'encodage PC1 256 bits ... Je l'ai pas mis sur le net parce que c illégal, mais si vous voulez savoir comment c fait ... mat_clot@hotmail.com

  • signaler à un administrateur
    Commentaire de ManDeq59 le 02/07/2004 23:08:18

    j'ai fait un algo tout simple, mais franchement je ne pense pas que quelqu'un pourrait trouver le texte d'origine.

    Essayé :

    x¹µ'ÈÆÃyCT°ÂƲ¢»ONοqÁs¹OYqZ²V­¶zT1öq±YYg~ζq°]¯º>yÆ¿m~¹ºsf[¶¹©¯T1»¶¿yV¯ºsººq²?­¶TYqrnWWQOǵq¶oWQhÎqò¬¹°T

    dite moi la réponse si vous l'a trouvez

  • signaler à un administrateur
    Commentaire de Fildomen le 06/07/2004 01:03:58

    hé, je vois prkoi le truc des 512bits est interdit, c'est pas logique du tout, ce n'ai rien qu'un prog de cryptage, pas un bombe à fragmentation kon même, moi, je pense que je vais me casser la tête de faire un, de toute facon , dans mon pays , on trouve que des dactilos dans les comissariat, ben il y a pas un spéciaiste pour leur dire le truc, de toute facon, et la meilleure, je vais pas dire est ce qui est 512 ou meme 1024, je vais dire, "UN PROG DE CRYPTAGE TROP FORT " et le coup est fait, il y a un truc pour savoir de quel xbits sagit-il ??
    merci de me répondre
    et je veux meme qlq'un qui peut me faire un tuto sur le cryptage pour le publier sur mon site, c'est très important pour tout les programmeurs.
    http://www.DevPortail.tk

  • signaler à un administrateur
    Commentaire de TheTiger le 22/08/2004 02:07:55

    Je mes ce tut de côté mais pour le moment je ne peux pas vraiment me prononser dans le sens où oui mon algo a passé le test mais il semble que dans certain cas particulier il y ai un mauvais décryptage d'un octet et ça c'est pas normale je ne promet pas d'y parvenir je vous tient au courrant :)

  • signaler à un administrateur
    Commentaire de TheTiger le 22/08/2004 14:03:29

    Prendre comme clé :
    A
    Prendre comme texte :
    AAAAAAAAAAAAAAAA

    Donne :
    ²]bzcÑás2âj`)p

    En Hexa :
    B2 5D 62 B8 63 D1 E1 73 18 32 E2 14 6A 60 29 70

    =================================================

    Prendre comme clé :
    B
    Prendre comme texte :
    AAAAAAAAAAAAAAAA

    Donne :

    Š©y€ÛŽ›
    T7ðØI
    En Hexa :
    8A A9 79 80 8D DB 8E 9B A 54 37 C3 B0 D8 49 1C

    =================================================

    Prendre comme clé :
    AAAA
    Prendre comme texte :
    AAAAAAAAAAAAAAAA

    Donne :
    ²{5z??¹"óKÌñ†®

    En Hexa :
    B2 7B 35 B8 3F 3F B9 22 F3 1 4B CC 7F F1 86 AE

    Alors il est bon ?

  • signaler à un administrateur
    Commentaire de Proger le 22/08/2004 15:59:39

    Si tu changes, dans le dernier exemple, le "B2" par "B3" et que tu le décryptes avec la bonne clé ton texte apparait en claire ? (genre BAAAA au lieu de AAAAA)

    Si tu change d'un octet la clé ton texte décrypté apparait-il partiellement en claire ?
    (genre CCCCCC clé AAA, crypte puis décrypte avec BAA tu obtient DCCCCC ?)

    Il faut peut etre essayé sur plus de caractères identique pour trouvé ce genre de problème.

    Recherche aussi toutes périodes dans ton cryptage. fait une super-longue chaine avec le meme caractère et une clé d'1 octet. Regarde s'il y a une période.
    (Ok ce dernier test n'est pas très révélateur de l'efficacité d'un cryptage)

    Rappellez-vous que quand vous faite un algo de cryptage, il ne faut pas simplement l'optimiser pour passer ces tests a partir de la théorie de base !!

    Mon tuto a pris un coup de vieux... update avec beaucoup d'infos sympa a venir.

  • signaler à un administrateur
    Commentaire de TheTiger le 22/08/2004 16:53:49

    donc voilà les résultats:

    Prendre comme clé :
    AAAA
    Prendre comme texte :
    AAAAAAAAAAAAAAAA

    le message crypté
    ²{5ž??¹"óKÌñ&#134;®

    qui a pour valeur Hexa
    B2 7B 35 B8 3F 3F B9 22 F3 1 4B CC 7F F1 86 AE

    je le remplace par
    B3 7B 35 B8 3F 3F B9 22 F3 1 4B CC 7F F1 86 AE

    et je décrypte avec AAAA cela donne
    B,™‹s='îíëï&

    soit en Hexa
    42 1E 2C 99 0 8B A8 3D 27 EE E ED EB EF 26 16

    en effet le 1er octet est difficilement crypté mais c'est malgré tout rare et si ce n'est que le 1er octet en tout cas je retest avec l'octet d'aprés

    qui a pour valeur Hexa
    B2 7B 35 B8 3F 3F B9 22 F3 1 4B CC 7F F1 86 AE

    je le remplace par
    B2 7C 35 B8 3F 3F B9 22 F3 1 4B CC 7F F1 86 AE

    je décrypte par AAAA cela donne
    ABÉ UÒY@
    Ÿjý

    ce qui est normale dans le sens où si on décrypte la partie qui a était crypté sans changement, mais ç'est vrai que le fais de changer et d'ajouter à la valeur crypté change le résultat ce qui est plus que logique la seule difficultée réside dans le fait que la personne n'ai pas sensé avoir la clée donc le problème ne se pose pas :) car si je change la clée exemple:

    Prendre comme clé :
    AAAA
    Prendre comme texte :
    AAAAAAAAAAAAAAAA

    et je décrypte par BAAA ça donne:
    i¹ƒK•NÞYLVÇϘ

    soit:
    69 14 B9 83 4B 95 4E DE 5 59 1A 4C 56 C7 CF 98

    ou bien si je décrypte par AAAB ça donne :
    Axð'³¶YlÇÛÆ$…ªQ

    seule le 1er octet apparait mais rien ne prouve au gars qui déchiffre que A est le 1er octet :) bon ok si le gars connait l'algo

    De plus le cryptage sur un byte n'est pas fiable on est d'accord car mon algo devient trés performant à partir du moment où on utilise au moin 2 types de carctères différents dans la clée :) en plus de la clée mon algo utilise 3 valeurs de base a,b,c qui doivent avoir la même valeur pour chiffrer ou déchiffrer cela étant là pour le test je les ai laissés fixe bien entendu donc ces valeurs sont importantes, il ne faut pas les mettres à 0 des le dépard car la formule par de là et donc il est important de ne pas modiffier entre un cryptage et un décryptage :) ce la étant elles peuvent ne pas étre définie par l'utilisateur ;) donc tout tourne autour de la clée ;)

    Sinon je vais chercher une solution pour le 1er octet car il est bien sur dépandant de la clée mais.... Sur ce j'en dis pas plus pour le moment.

    Maintenant tout algo est cracable à partir du moment où on crypte sur 1 octet il suffit de tester 256 valeur possible de la clée et on finis avec le texte en clarie au bout d'un moment :) mais quand on crypte en 40 bits déjà mon algo fait fureur ! ça met du temps à étre décrypté :)

    Il faut tester 256^40 fois de décrypter le texte c le seule moyen :)

    ce qui donne
    2,1359870359209100823950217061696e+96
    test bon courage ^^

    A+

  • signaler à un administrateur
    Commentaire de TheTiger le 23/08/2004 01:39:57

    Pour info j'ai changé mon algo mais alors là il est bon...

    J'ai fait un test avec un petit programme fait vite fait et ça m'a permit d'observer que mon algo pouvais avoir plusieur possibilité dans le sens ou que l'on crypte ou décrypte avec "Benois" ou "Kenois" n'avais pas d'inportance car le K et le B était 2 les solutions ce qui est trés bizzare... (mais en fait c'est logique car par multiplication ça se recoupe) et donc en changeant avec le petit programme je me suis aperçu que finalement un truque bien plus simple est bien plus éfficasse ;)

    Sinon pour le cryptage matriciel c'est le DES faut faire un petit tour sur :
    www.commentcamarche.com dans la rubrique cryptographie ;) A+

  • signaler à un administrateur
    Commentaire de TheTiger le 23/08/2004 14:57:08

    Voici quelque site pour les systèmes de cryptage ! :)

    http://cui.unige.ch/tios/cours/securite/2004/cours/cours7.pdf

    http://www.dcs.napier.ac.uk/~bill/c_rsa.htm

    http://cui.unige.ch/tios/cours/securite/2004/cours/cours6.pdf

    http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf

    A+

  • signaler à un administrateur
    Commentaire de TheTiger le 27/08/2004 13:09:51

    Hey mec il est bien tont tut mais j'amerais avoir ton avie sur mon "crypteur"

    http://www.vbfrance.com/code.aspx?ID=25664

    Je crois que même un tut ça vaut pas un chti coup d'oeil d'un expert STP

    pour moi c'est un bonne algo à toi de juger :)

    A+

  • signaler à un administrateur
    Commentaire de TheTiger le 09/10/2004 19:46:41

    Il semble que la bordélisation de clée soit d'un intérêt non négligable :) j'en suis fort heureux mais je vais surement essayer de creer un log de brute force pour mon propre crypteur car je ne veux pas assurer une sécurité sans tester, pour le moment personne c'est vraiment proposer à décrypter un message mais je sais que tout ce qui est texte est fortement décryptable même avec AES aprés quand c'est un fichier c'est différent car dans un texte on doit s'attendre à des caractères tapablent au clavier ;) est des mots alors que pour un fichier c'est plus compliqué sinon qu'il faudrait bien connaitre le format du fichier, mois je conseille de mettre des phrases en mot de passe pour mieux dormir la nuit ! nan je déconne mais rien n'est vraiment indécryptable le risque en décryptant c'est de tomber sur un fichier coérent qui n'a rien avoir avec celui d'origine (avec 256^16 c'est probable) ... A+

  • signaler à un administrateur
    Commentaire de caguette le 09/05/2005 17:49:39

    Pour ceux qui sont intéressés par le criptage (et non l'encodage), je suis en 2ème année de DUT info et j'ai une prof de maths qui démystifie tout...

    Depuis ses cours, le RSA, les clés publiques et privées  et autres criptages à la limite de la légalité n'ont plus aucun secret, en plus elle est super pédagogue, il suffit de suivre les étapes à la lettre et ça marche.

    Bon c'est sûr il faut y aller à grand coups de matrices mais c'est pas très compliqué avec un peu de concentration... Et c'est indéchiffrable pour les ordi du commun des mortels.

    N'hésitez pas à me contacter

  • signaler à un administrateur
    Commentaire de TheTiger le 09/05/2005 20:43:12

    Ben pour le RSA suffis de gérer des grands nombres par contre j'aimerais savoir comment faut faire pour gérer les puissances modulo de grande empleur voici mon algo :

    unsigned long PuissanceModuloRef(unsigned long *C,unsigned long *P,unsigned long *M)
    {
    if(*P==0)return 1;
    unsigned long LPuissanceModuloRef;
    LPuissanceModuloRef=*C % *M;
    if(*P==1) return LPuissanceModuloRef;
    unsigned long ValA;
    ValA=2;
    while(*P >= ValA)
    {
    ValA=ValA+ValA;
    LPuissanceModuloRef=(LPuissanceModuloRef*LPuissanceModuloRef)%*M;
    }
    *P=*P-(ValA/2);
    return ((LPuissanceModuloRef*PuissanceModuloRef(C,P,M))%*M);
    }

    unsigned long PuissanceModulo(unsigned long C,unsigned long P,unsigned long M)
    {
    return PuissanceModuloRef(&C,&P,&M);
    }

    là il est question de variable long aprés faut mettre le calcule des grands nombre ce qui n'est pas dure mais ça risque d'être un peut long au niveau temps de calcule
    là mon algo va à une vitesse carré c'est à dire que plus il progresse et plus il va vite mais quand il va trop vite s'il dépasse la puissance il va rapeller la fonction en demadant la puissance restante à calculer... En gros  je vois pas comment faire plus rapide aprés si t'as prof aurait une idée sur les modulos et les puissances ça serait cool :) A+ et merci