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

Algorithmes et structures de données Discussion :

Cryptage


Sujet :

Algorithmes et structures de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2003
    Messages : 134
    Points : 66
    Points
    66
    Par défaut Cryptage
    Bonjour,

    J'ai créé un algorithme de cryptage maison et j'aimerai avoir votre avis (ce que vous en penser quoi) à tout les niveaux : violabilité ,efficacité ,etc ..

    1)L'utilisateur se choisit un mot de passe (qui servira de clé)
    2)Il rentre le text à crypter

    3)On inverse la chaîne à crypter ,et met cette chaîne dans la variable str2
    4)On créé un chaine str3 conteant : la moitié des caractères de la clé + str2 + l'autre moitié de la clé
    5)On augmente les valeurs ASCII des caractères de la chaîne de 1.

    P.S. : N'oubliez pas dans votre jugement que je suis un débutant

    Merci bien

    Zazeglu

  2. #2
    Membre expérimenté Avatar de alexrtz
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2003
    Messages
    639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2003
    Messages : 639
    Points : 1 359
    Points
    1 359
    Par défaut
    Salut,

    Ca dépend c'est pour quoi faire.
    Si c'est pour protéger les plans de la future navette spatiale c'est un peu léger par contre si c'est pour envoyer un message à quelqu'un c'est suffisant.
    Il faudrait juste que tu fasses des opérations un peu plus compliquées que la dernière addition (qui doit pas servir à grand chose).
    Tu peu t'éclater avec des modulos, ou une opération en fonction de la place à laquelle se trouve le caractère (la place pouvant dépendre d'une deuxième clé)...
    Plus c'est tordu, mieux c'est
    Le plus efficace étant quand même d'avoir de très bonne bases en maths et de s'en servir pour les algos.
    "Je suis incapable d'expliquer ce qui se passa ensuite : je lâchai quelque chose, quelque chose à quoi je m'agrippais depuis toujours sans m'en rendre compte. Je m'enfonçais dans une obscurité chaude, moelleuse et protectrice, tandis qu'un loup montait la garde par mes propres yeux."

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2003
    Messages : 134
    Points : 66
    Points
    66
    Par défaut
    j'ai de très bonnes bases en Math étant donnée que je suis en Math fortes (j'ai 17 ans).
    Bah je vais suivre ton conseille et faire des truc tordu ,sinon je fait ce programme pour un gars de ma classe qui m' ademandé un programme qui crypte des donnée en focntion d'un mot de passe qu'on lui donne (alors pour une fois que mes programmes intéressent qqun j'y vais à font )

    L'ennui aussi c'est que je fait ça avec VB6 alors question rapidité ...
    Je suis loin de maîtriser le C ,alors C# ce serait l'idéal mais vu que très peu de personne possède le framework ce n'est pas la peine (dommage car j'adore C# )

    Merci

    Zazeglu

  4. #4
    Membre actif
    Avatar de doof
    Inscrit en
    Août 2003
    Messages
    160
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 160
    Points : 294
    Points
    294
    Par défaut
    Salut, que veux-tu dire par "on inverse la chaine a crypter" ? tu veux dire changer l'ordre ? de droite vers la gauche ?

    et quelle est ta chaine retournée ? j'ai l'impression de louper une étape.

    Sinon, augmenter les valeurs ascii ne sert pas a grand chose effectivement.

    Bon, j'ai pas tout compris aux étapes de ton algo mais j'ai l'impression que tu te contentente de concatener la clé et la chaine en fesant des substitutions simples, dans ce cas, c'est pas du tout efficace et une simple analyse de frequence suffit pour retrouver ton algo (le e ressort a 17%....).

    Si tu pouvais ewpliquer un peux plus

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2003
    Messages : 134
    Points : 66
    Points
    66
    Par défaut
    ben il inverse l'ordre des caractères :

    par exemple :
    "Salut !' deviendrait : "! tulaS"

    Puis il concatène la clé à ceci et il augment les caractères de 1
    Si tu as un proposition d'amélioration pas trop complexe se serait avec plaisir

    Merci

    Zazeglu

  6. #6
    Membre averti
    Avatar de rolkA
    Inscrit en
    Juillet 2003
    Messages
    324
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 324
    Points : 369
    Points
    369
    Par défaut
    moi j'ai une proposition pas trop complexe: au lieu d'ajouter 1, tu ajoute la position du pointeur de fichier. exemple: après l'addition, abcde deviendrait acegi.
    Reste à étudier la compatibiltié avec le reste pour que ce soit réversible.
    Un historique local pour Visual Studio 2005 et 2008 :
    http://www.codeplex.com/VLH2005

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2003
    Messages : 134
    Points : 66
    Points
    66
    Par défaut
    Ben en Vb c'est le déscripteur qui qui joue le rôle de pointeur n'est ce pas ?
    Mais l'ennui c'est que si l'utilisateur à rentré qqe chose comme le lettre "é"(ASCII environ 230) ,et qu'on aditonne ben on tombera sur un machin comme 280 ,qui n'est pas un code ASCII valide
    Ou alors j'ai pas bien compris ce que tu as dis ...

    Merci

    Zazeglu

  8. #8
    Membre actif
    Avatar de doof
    Inscrit en
    Août 2003
    Messages
    160
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 160
    Points : 294
    Points
    294
    Par défaut
    Ok, c'est bien ce qui me semblait, c'est vraiment simple de retrouver l'algo pas analyse de frequence. Une simple substitution entraine que chaque caractere de ta chaine serat remplacé par une seule et meme valeur : il faut eviter ca au maximum.

    Plusieurs solutions sont possible, un simple xor par exemple avec ta clé permet de faire en sorte que le meme caractere codé peut avoir valeurs. ex :

    clé : toto
    message : "les dinosaures sont les plus forts"

    l'encodage fonctionnera dans ce sens (en prenant les valeurs ascii des caracteres) :

    "l" xor "t"
    "e" xor "o"
    "s" xor "t"
    " " xor "o"
    "d" xor "t"
    "i" xor "o"

    ... et ainsi de suite

    l'avantage est que ca n'est plus attaquable par analyse de frequence, cependant le simple xor n'est pas non plus tres efficace, il faut le combiner avec des transformations mathématiques complexes pour le rendre plus solide, pour ca, libre court a ton imagination

    Mais dans tous les cas, oublie la simple substition facilement decelable.

  9. #9
    Membre averti
    Avatar de rolkA
    Inscrit en
    Juillet 2003
    Messages
    324
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 324
    Points : 369
    Points
    369
    Par défaut
    230+50 = 24, code valide, où est le problème ?
    Un historique local pour Visual Studio 2005 et 2008 :
    http://www.codeplex.com/VLH2005

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2003
    Messages : 134
    Points : 66
    Points
    66
    Par défaut
    Je ne sais pas ,avec VB6 la valeur ASCII de 'ç' plus la valeur ASCII de 'é' donne quelque chose comme 450 ...

    Merci

    Zazeglu

  11. #11
    Membre averti
    Avatar de rolkA
    Inscrit en
    Juillet 2003
    Messages
    324
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 324
    Points : 369
    Points
    369
    Par défaut
    Désolé, je ne savais pas. Oublie ce que je t'ai dit. Le mieux (en rapport efforts/résultat) est de "s'amuser" avec les modulos... Mais il faut vérifier que ton algo est une fonction bijective... tu dis avoir fait pas mal de maths donc tu devrais comprendre.
    Un historique local pour Visual Studio 2005 et 2008 :
    http://www.codeplex.com/VLH2005

  12. #12
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Points : 4 637
    Points
    4 637
    Par défaut
    Citation Envoyé par doof
    Plusieurs solutions sont possible, un simple xor par exemple avec ta clé permet de faire en sorte que le meme caractere codé peut avoir valeurs.
    Le gros defaut du XOR (lorsque tu utilises toujours la meme cle) est que si quelqu'un recupere un couple clair/chiffre il peut facilement retrouve la cle (en effet si a XOR b = c alors a XOR c = b)

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2003
    Messages : 134
    Points : 66
    Points
    66
    Par défaut
    Merci bien pour toutes vos idées !

    Zazeglu

  14. #14
    Membre actif
    Avatar de doof
    Inscrit en
    Août 2003
    Messages
    160
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 160
    Points : 294
    Points
    294
    Par défaut
    Citation Envoyé par gl
    Citation Envoyé par doof
    Plusieurs solutions sont possible, un simple xor par exemple avec ta clé permet de faire en sorte que le meme caractere codé peut avoir valeurs.
    Le gros defaut du XOR (lorsque tu utilises toujours la meme cle) est que si quelqu'un recupere un couple clair/chiffre il peut facilement retrouve la cle (en effet si a XOR b = c alors a XOR c = b)

    Exactement, c'est pour ca que je recommende de transformer en aval mathematiquement le resultat, ca reste cependant un bon depart pour "noyer" la frequence d'apparition des lettres.


    Voilà un tres bon site sur les types de cryptographie et les moyens de les attaquer (tu comprendras vite pourquoi je te recommende d'oublier la substitution simple) :

    http://www.jura.ch/lcp/cours/dm/codage/index.html

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2003
    Messages : 134
    Points : 66
    Points
    66
    Par défaut
    ok merci

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2003
    Messages : 134
    Points : 66
    Points
    66
    Par défaut
    En attendant moa j'ai modifié le 'ajouter 1' par ceci :

    Si la position du caractère dans la chaîne est divisible par 2 :
    alors retire 2 à la valeur ascii du caractère
    Autrement :
    ajouter 2 à la valeur ascii du caractère

    Qu'en pensez vous ?

    Merci

    Zazeglu

  17. #17
    Membre actif
    Avatar de doof
    Inscrit en
    Août 2003
    Messages
    160
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 160
    Points : 294
    Points
    294
    Par défaut
    Moi, j'en pense que le cryptanalyste qui va tenter de retrouver l'algo va vite se rendre compte qu'il s'agit d'un decalage ascii :

    -la tranche des caracteres differents se retrouve dans une fourchette correspondant au jeu alphabetique.

    -les caracteres qui ne sont pas alphabetiques sont bizzarement pres de signes de ponctuation, d'espace et de chiffres.


    Si c'est un decalage, il ne peut etre que par rapport a 2 choses :

    - la clé, dans ce cas, ca serait vite éliminé vu la faible difference entre la valeur ascii originel et la valeur effective (la fourchette correspondant etrangement a la veritable fourchette de caracteres)

    reste :

    - la position dans le texte, dans ce cas, prendre les valeurs isolées (l'espace, il n'aura que 2 valeurs differentes : 18 et 22) -> la correlation avec les chiffres paires est relativement facilement retrouvée.

  18. #18
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Points : 4 637
    Points
    4 637
    Par défaut
    Citation Envoyé par doof
    Voilà un tres bon site sur les types de cryptographie et les moyens de les attaquer (tu comprendras vite pourquoi je te recommende d'oublier la substitution simple) :

    http://www.jura.ch/lcp/cours/dm/codage/index.html
    Je ne le connaissait pas, il est vraiment tres bien ce site.

  19. #19
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2003
    Messages : 134
    Points : 66
    Points
    66
    Par défaut
    ahh oui ,et le fait que la chaîne soit renversé cela ne change rien ?
    Mais dis tu considère que le gars connait la clé oui ou non ?

    Merci

    Zazeglu

  20. #20
    Membre actif
    Avatar de doof
    Inscrit en
    Août 2003
    Messages
    160
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 160
    Points : 294
    Points
    294
    Par défaut
    franchement, non, l'analyse de frequence (désolé d'insister sur ce terme) donnera dans tous les cas la bonne voie.

    Dans ton systeme, il te manque de l'entropie,si on fait un graphe d'apparition, on retrouvera des fourchettes vraiment trop explicites.

    L'etape de depart consiste a noyer ce type d'analyse.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Cryptage de fichier
    Par :GREG: dans le forum Composants VCL
    Réponses: 6
    Dernier message: 18/12/2008, 10h43
  2. Cryptage de colonnes sous Oracle
    Par Julian Roblin dans le forum SQL
    Réponses: 9
    Dernier message: 28/11/2006, 19h24
  3. Cryptage
    Par Claythest dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 04/06/2003, 16h20
  4. cryptage
    Par giminik dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 06/11/2002, 23h46
  5. Cryptage en C selon la méthode de césat
    Par shenron dans le forum C
    Réponses: 2
    Dernier message: 31/05/2002, 09h22

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