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

Langage Perl Discussion :

Chiffrement par décalage avec Perl


Sujet :

Langage Perl

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2014
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Chiffrement par décalage avec Perl
    Salut à tous je suis etudiant en sécurité informatique.
    Je me tournes vers vous et sollicite votre aide parce que je suis bloqué dans un exercice où je dois faire un chiffrement par decalage avec Perl.
    En effet il faut créer un programme dans lequel on demande à un utilisateur de rentrer le message à chiffrer puis puis un nombre compris entre 1 et 25 pour faire le decalage par ex: il entre hello puis 2 le programme doit renvoyer JGNNQ. Donc chaque lettre du texte est décalée suivant sa position dans l'alphabet 2 fois.
    À votre disposition si la question n'est pas claire.
    En esperant que quelqu'un ait une solution.
    Merci d'avance pour vos réponses.

  2. #2
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 256
    Points
    12 256
    Billets dans le blog
    1
    Par défaut
    La fonction ord donne la valeur ascii d'une lettre et la fonction chr donne la lettre correspondant à une valeur ascii. Il suffit de les combiner:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $perl -e 'my $c = "hello"; my @a = split "", $c; $_ = chr(ord($_)+2) for @a; $d = join "", @a; print "$d\n"'
    jgnnq

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2013
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2013
    Messages : 247
    Points : 406
    Points
    406
    Par défaut
    une solution vraiment pas la plus jolie pourrais être

    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
    my @alphabet = ('a' .. 'z');
    my $liste = "@alphabet";
    $liste =~ s/\s+//g;
     
    # Variable en dure mais faire la recup de ce que tape l'utilisateur
    my $texte = "azerty";        # Attention il faudra verifier qu'il n'y a pas d'espace, de caracteres speciaux ...
    my $decalage = 3;
    my $texte_modif = '';
     
    my @Liste_lettres = split( '', $texte);
    foreach my $lettre ( @Liste_lettres ){
     
            my $index = index($liste, $lettre) + $decalage;
            $index -= 26 if ( $index > 25 );
         # insertion de la nouvelle lettre dans le nouveau texte
            $texte_modif .= substr($liste,$index,1);
    }
    print "Texte initiale: $texte\n";
    print "Texte final   : $texte_modif\n";
    Résultat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    -bash-3.00$ perl test.pl
    Texte initiale: azerty
    Texte final   : dchuwb
    Attention, solution à améliorer car "my @alphabet = ('a' .. 'z');" ne fonctionne pas avec le use strict et il n'est pas très bien de l'enlever

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2014
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par Lolo78 Voir le message
    La fonction ord donne la valeur ascii d'une lettre et la fonction chr donne la lettre correspondant à une valeur ascii. Il suffit de les combiner:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $perl -e 'my $c = "hello"; my @a = split "", $c; $_ = chr(ord($_)+2) for @a; $d = join "", @a; print "$d\n"'
    jgnnq
    Merci pour la reponse.
    Je voulais utiliser ORD mais sans penser a utiliser le SPLIT c'est pourquoi je n'avancais pas encore merci.

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2014
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par 6ril23 Voir le message
    une solution vraiment pas la plus jolie pourrais être

    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
    my @alphabet = ('a' .. 'z');
    my $liste = "@alphabet";
    $liste =~ s/\s+//g;
     
    # Variable en dure mais faire la recup de ce que tape l'utilisateur
    my $texte = "azerty";        # Attention il faudra verifier qu'il n'y a pas d'espace, de caracteres speciaux ...
    my $decalage = 3;
    my $texte_modif = '';
     
    my @Liste_lettres = split( '', $texte);
    foreach my $lettre ( @Liste_lettres ){
     
            my $index = index($liste, $lettre) + $decalage;
            $index -= 26 if ( $index > 25 );
         # insertion de la nouvelle lettre dans le nouveau texte
            $texte_modif .= substr($liste,$index,1);
    }
    print "Texte initiale: $texte\n";
    print "Texte final   : $texte_modif\n";
    Résultat:
    [CODE]-bash-3.00$ perl test.pl
    Attention, solution à améliorer car "my @alphabet = ('a' .. 'z');" ne fonctionne pas avec le use strict et il n'est pas très bien de l'enlever
    formidable boulot. je vais tester en modifiant pour recuperer le text et le decalage par l'utilisateur.
    vraiment merci beaucoup pour l'aide.

  6. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2014
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    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
     
    use strict;
    use warnings;
    my @alphabet = ('a' .. 'z');
    my $liste = "@alphabet";
    $liste =~ s/\s+//g;
     
    # Variable en dure mais faire la recup de ce que tape l'utilisateur
    print("Entrer un mot pas d'espaces ou caracteres speciaux please: ");
    chomp(my $texte = <STDIN>);
    print("Entrer le nombre de decalage: ");
    chomp(my $decalage =<STDIN>);
    my $texte_modif = '';
     
    my @Liste_lettres = split( '', $texte);
    foreach my $lettre ( @Liste_lettres ){
     
            my $index = index($liste, $lettre) + $decalage;
            $index -= 26 if ( $index > 25 );
         # insertion de la nouvelle lettre dans le nouveau texte
            $texte_modif .= substr($liste,$index,1);
    }
    print "Vous avez tapez : $texte\n";
    my $ch = uc($texte_modif);
    print "Le resultat du chiffrement par decalage de $decalage donne : $ch\n";
    merci les amis voici le code final.

  7. #7
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2013
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2013
    Messages : 247
    Points : 406
    Points
    406
    Par défaut
    Citation Envoyé par Lolo78 Voir le message
    La fonction ord donne la valeur ascii d'une lettre et la fonction chr donne la lettre correspondant à une valeur ascii. Il suffit de les combiner:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $perl -e 'my $c = "hello"; my @a = split "", $c; $_ = chr(ord($_)+2) for @a; $d = join "", @a; print "$d\n"'
    jgnnq
    j'avais pas vu ta réponse mais j'aime l'idée de passer par le code ascii
    j'y aurais pas pensé mais très malin/rapide

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2012
    Messages : 1
    Points : 1
    Points
    1
    Par défaut amelioration
    Citation Envoyé par danecr7 Voir le message
    formidable boulot. je vais tester en modifiant pour recuperer le text et le decalage par l'utilisateur.
    vraiment merci beaucoup pour l'aide.
    on prend en compte le modulo...on obtient quelque chose de ce genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    print "Quel est votre texte ? ";
    chomp($c = <STDIN>);
    print "entrer le decalage? ";
    chomp($decalage = <STDIN>);
    my @a =split("", $c);
    $_ = chr(((ord($_)-97+$decalage)%26)+97) 
    for @a;
     $d = join("", @a);
     print "$d\n"

  9. #9
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 256
    Points
    12 256
    Billets dans le blog
    1
    Par défaut
    S'il faut revenir au début de l'alphabet quand on dépasse z, je ferais personnellement plutôt ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    perl -e 'my $c = "azerty"; my @a = split "", $c; $_ = chr(ord($_)+2 > 122 ? ord($_)-24 : ord($_)+2) for @a;
    cbgtva
    ou encore, un peu plus long maissans douteun peu plus rapide:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $perl -e  'my $c = "azerty"; my @a = split "", $c; $ord = ord($_) + 2 and $_ = chr($ord > 122? $ord - 26: $ord) for @a ; print join "", @a, "\n";'
    cbgtva

  10. #10
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 256
    Points
    12 256
    Billets dans le blog
    1
    Par défaut
    Si le texte à chiffrer est long, alors le processus consistant à découper le texte en lettres individuelles, à les convertir puis à les recoller sera très lent.

    Il existe en Perl une fonction très pratique et extraordinairement rapide pour ce genre de choses, tr///. Par exemple, pour faire un décalage de 2:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ perl -e '$c = "azerty"; $c =~ tr/a-z/c-zab/; print $c;'
    cbgtva
    Voici l'exécution d'un encodage en rot13 (décalage de 13, pratique car il a propriété que si on le lance une seconde fois, le décalage devient 26, donc 0, autrement dit le même programme sert à la fois a coder et à décoder) d'une traduction française de la bible:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $ time perl -pe 'tr/A-Za-z/N-ZA-Mn-za-m/' Bible_Second.txt > Bible_crypted.txt
     
    real    0m0.159s
    user    0m0.062s
    sys     0m0.062s
    Le mini programme uni-ligne ci-dessus a chiffré le texte entier de la Bible (ancien plus nouveau testaments, plus de 400 kilo-octets) en moins de 0,16 seconde!

    Voici le début du fichier résultat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Trarfr 1
    Nh pbzzraprzrag, Qvrh pern yrf pvrhk rg yn greer.
    Yn greer rgnvg vasbezr rg ivqr: vy l ninvg qrf graroerf n yn fhesnpr qr y'norzr, rg y'rfcevg qr Qvrh fr zbhinvg nh-qrffhf qrf rnhk.
    Le problème est que cette commande ne permet pas de gérer un décalage susceptible changer. Du coup, je n'en ai pas parlé dans mes posts précédents car elle me paraissait inutilisable.

    Mais en y repensant dans les transports en commun rentrant du boulot ce soir, je me suis soudain aperçu qu'il y avait moyen de s'en servir, à condition de construire dynamiquement la commande à exécuter en fonction du décalage voulu. L'astuce consiste ensuite à l'exécuter à l'aide de la fonction eval, qui compile et exécute une chaîne de caractère comme du code Perl (à condition que ce soit du code valide).

    Voici le programme:

    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
    use strict;
    use warnings;
     
    my $decalage = shift;
    chomp $decalage;
    $decalage = 13 unless defined $decalage; # valeur par défaut si l'utilisateur a omis de passer le décalage en paramètre
    my $phrase = shift;
    $phrase = "voyez le brick geant que j'examine pres du wharf" unless defined $phrase;
     
    my $let_a = chr(ord("a") + $decalage);
    my $last_let = chr(ord("a") + $decalage - 1);
     
    my $command = '$phrase =~ ' . "tr/a-z/${let_a}-za-$last_let/;";
    print "$command\n"; # affiche la commande qui sera exécutée
    eval ($command);
    print "$phrase\n";
    Voici un exemple d'exécution:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ perl chiffrement.pl 3
    $phrase =~ tr/a-z/d-za-c/;
    yrbhc oh eulfn jhdqw txh m'hadplqh suhv gx zkdui
    Et un exemple de rot13, montrant comment le même programme chiffre et déchiffre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $ perl chiffrement.pl 13
    $phrase =~ tr/a-z/n-za-m/;
    iblrm yr oevpx trnag dhr w'rknzvar cerf qh junes
     
    ~
    $ perl chiffrement.pl 13 "iblrm yr oevpx trnag dhr w'rknzvar cerf qh junes"
    $phrase =~ tr/a-z/n-za-m/;
    voyez le brick geant que j'examine pres du wharf
    Je pense que ça donne une bonne idée. Pour un programme réel, il faudrait au minimum ajouter le traitement des majuscules et des lettres accentuées.

    Je reste à disposition s'il y a des questions.

  11. #11
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Concernant le déchiffrement par décallage
    Bonjour LOLO.Merci de m'avoir répondu.J'ai pu comprendre le cheminement car ce qui m'intriguait c'est pourquoi soustraire si on sait que les opérations dans ces corps se sont modulo 26.Je comprends maintenant que pour chiffrer j'ajoute le nombre de décalage et pour déchiffrer je soustrait ce nombre.Ce qui est d'ailleurs normal.

  12. #12
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2014
    Messages : 4
    Points : 3
    Points
    3
    Par défaut VBA chiffre / déchiffre /cipher
    bonjour tout le monde ,

    j aurai besoin de votre aide a pouvoir trouver le code pour déchiffrer les texte suivant sur vba excel le plus tôt possible :


    texte 1:
    Le message ci-dessous a été encrypté à l'aide d'une clef de longueur inconnue :

    Me avt osiibjpvk dz m'zmtedfoehdot lbtcénaohruz fso ee cévzkppkds xdstvhoen gaxtmt
    ér dz m'zrqrds eo qamlj zkmen m'dmuudsjoi o'zru kzt gz mjhos oséxhfund.C'dtt obr
    dmlz ruz me lpnyd mvsiéhzuiltf mdttz fn bpnozdt zwex me lpnyd rédm zs qpzod kfs
    lbtcénaohruzr ppqfs opumqbizmu n'fn obsnds, hm azvdmzjt spuenvrn z vupim sexnvrn
    qopq cjlclzq l'zcîhd qph séobrz me rzmwnme cf gz rézmioé.


    texte 2:

    Le message ci-dessous a été encrypté à l'aide d'une clef de longueur 3 :

    Srkjrwpmeqg wozdy ls d ndca bawwahn vobwwwue hnclnahro spuirlnc tk bqllz bejgau
    wqd eepwen izlop-pnrob pnrgndmo, wqd wha ujlvausa tnbijj pr xxihg xlgchr dnz bawtau
    egikws. Sk fwu, wha ujlvausa io weqneqg.

    Indices : Like, InStr, "software".


    text 3 :

    Le message ci-dessous a été encrypté à l'aide d'une clef de longueur 2 :

    Ymubwt dmec yt jd ric evw uim cobt vn kbgorbgogoe wpss dmec ujjm cc y tjmmcor
    ntwdfpnbri xfp llput xpf zmv mgwc.

    Indices : Like, InStr, "psychopath".


    Merci beaucoup a l avance

  13. #13
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 256
    Points
    12 256
    Billets dans le blog
    1
    Par défaut
    C'est un devoir à la maison ou tu cherches à craquer le chiffrement des ordis du Pentagone?

    PS: je n'ai pas envie de t'aider sur un tel sujet, je ne veux pas participer à du piratage. Mais j'en serait de toute façon incapable en VBA. C'est un forum Perl ici.

  14. #14
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2014
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    C est un devoir a la maison que je suis incapable de resoudre

  15. #15
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Peut-être que regarder ton cours pourrait t'aider... Ou lire les références qui ont été données.

    En particulier briser un chiffrement par décalage est très aisé par analyse des fréquences des lettres dans le résultat et en comparant avec les fréquences des lettres dans le langage d'origine (je suppose que les messages sont en français). Briser un chiffrement par décalage avec une clé est aussi aisé si tu connais la longueur de la clé : tu fais simplement la même analyse sur les caractères qui ont été encodé avec chaque partie de la clé, par exemple pour une clé de longueur 2, tu trouves le premier décalage en analysant les caractères d'index pair, et le deuxième avec les impairs.

    Si la longueur de la clé est inconnue, tu peux simplement commencer par faire des essais de déchiffrement en supposant que la clé soit de longueur 1/2/3... Si tu veux être efficace, il te faut un moyen automatique d'évaluer le résultat, il peut suffire de regarder si les premiers mots du résultat sont dans le dictionnaire.

    Montre nous que tu as essayé quelque chose si tu veux plus d'aide. Et bien sûr nos réponses seront en Perl... Il y a un forum VBA sur developpez.net sinon.

    --
    Jedaï

  16. #16
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 256
    Points
    12 256
    Billets dans le blog
    1
    Par défaut
    OK, une petite aide sur les méthodes utilisables.

    Le message ci-dessous a été encrypté à l'aide d'une clef de longueur 2 :

    Ymubwt dmec yt jd ric evw uim cobt vn kbgorbgogoe wpss dmec ujjm cc y tjmmcor
    ntwdfpnbri xfp llput xpf zmv mgwc.

    Indices : Like, InStr, "psychopath".
    Clé de longueur 2 et le mot psychopath. Ce mot a 10 lettres. Si je suppose que les mots sont préservés, il n'y a que deux mots avec 10 lettres dans le message codé: kbgorbgogoe et ntwdfpnbri. Par ailleurs, parmi les indices, le mot psychopath a deux fois la lettre p, en première et septième position. Avec une clé de longueur 2, elle doit donc être traduite dans le même lettre. Seul le mot "ntwdfpnbri" a la même lettre en positions 1 et 7. Donc, le "p" se traduit en "n", ce qui veut dire qu'avec un code à décalage, toutes les lettres de rang impair ont sans doute un décalage de - 2. Vérifions: dans ce cas, la troisième lettre, "w" correspond au "y" de psychopath. Cela a l'air de marcher. De même pour la 5ème lettre: le "f" du cryptogramme correspond au "h" du mot original. Si cette hypothèse est vérifiée, alors les lettres de rang impair sont toutes décryptées, et nous savons que le mot "psychopath" se traduit en "ntwdfpnbri". Pas de difficulté, dès lors, pour trouver le décalage des chiffres de rang pair et pour décoder le message (à supposer que mon hypothèse soit bonne). Bref, voilà, tu as une idée générale, à toi d'appliquer l'idée.

    Aucun intérêt de te montrer comment je le ferais en Perl, vu que tu veux le faire en VBA.



    N'ayant pas cherché à décoder ce truc (et j'ai expliqué précédemment que je ne le ferai pas)

Discussions similaires

  1. [AC-2010] Chiffrement par blocs pas compatible avec le verrouillage des lignes
    Par Daejung dans le forum Sécurité
    Réponses: 7
    Dernier message: 18/02/2015, 22h45
  2. Connexion a un site Web par POST avec perl ?
    Par SmoZy dans le forum Langage
    Réponses: 6
    Dernier message: 30/06/2014, 17h49
  3. [Turbo Pascal] Chiffrement par décalage (chiffre de César)
    Par tessafadel10 dans le forum Turbo Pascal
    Réponses: 2
    Dernier message: 14/06/2010, 22h43
  4. Réponses: 2
    Dernier message: 08/09/2006, 11h04

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