begin process at 2008 08 21 19:16:45
1 229 576 membres
391 nouveaux aujourd'hui
14 263 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 !

CRYPTOGRAPHIE PAR SUBSTITUTION POLYALPHABETIQUE (RANDRIANO)


Information sur la source

Catégorie :Application Classé sous : polyalphabetique, randriano, cryptographie Niveau : Initié Date de création : 19/04/2007 Date de mise à jour : 05/05/2007 16:35:55 Vu / téléchargé: 2 706 / 237

Note :
Aucune note

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


Description

J'ai beau cherché un programme de cryptographie par substitution alphabétique mais j'ai pas trouvé, il y en a beaucoup sur Vigénère et RSA.
Programmé sous C++ Builder
1) Primo, il permet de crypter/décrypter une chaîne de caractères
2) Secundo, il permet de crypter/décrypter des fichiers texte (*.txt)

Pour ceux qui ne connaissent pas cet algorithme, il est basé sur une matrice appelée abaque:
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
B C D E F G H I J K L M N O P Q R S T U V W X Y Z A
C D E F G H I J K L M N O P Q R S T U V W X Y Z A B
D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
E F G H I J K L M N O P Q R S T U V W X Y Z A B C D
F G H I J K L M N O P Q R S T U V W X Y Z A B C D E
G H I J K L M N O P Q R S T U V W X Y Z A B C D E F
H I J K L M N O P Q R S T U V W X Y Z A B C D E F G
I J K L M N O P Q R S T U V W X Y Z A B C D E F G H
J K L M N O P Q R S T U V W X Y Z A B C D E F G H I
K L M N O P Q R S T U V W X Y Z A B C D E F G H I J
L M N O P Q R S T U V W X Y Z A B C D E F G H I J K
M N O P Q R S T U V W X Y Z A B C D E F G H I J K L
N O P Q R S T U V W X Y Z A B C D E F G H I J K L M
O P Q R S T U V W X Y Z A B C D E F G H I J K L M N
P Q R S T U V W X Y Z A B C D E F G H I J K L M N O
Q R S T U V W X Y Z A B C D E F G H I J K L M N O P
R S T U V W X Y Z A B C D E F G H I J K L M N O P Q
S T U V W X Y Z A B C D E F G H I J K L M N O P Q R
T U V W X Y Z A B C D E F G H I J K L M N O P Q R S
U V W X Y Z A B C D E F G H I J K L M N O P Q R S T
V W X Y Z A B C D E F G H I J K L M N O P Q R S T U
W X Y Z A B C D E F G H I J K L M N O P Q R S T U V
X Y Z A B C D E F G H I J K L M N O P Q R S T U V W
Y Z A B C D E F G H I J K L M N O P Q R S T U V W X
Z A B C D E F G H I J K L M N O P Q R S T U V W X Y
Le code vous l'expliquera!
Ce programme est aussi un moyen d'apprendre à utiliser un SPLASHSCREEN (voir le fichier Crypto.cpp).

Conclusion

Il y a deux classes employées ici
1) PolyAlphabetique.h => pour le chiffrement de chaînes
2) PolyAlphabetique2.h => pour le chiffrement des fichiers texte
Cette 2ème classe est plus riche car son abaque est une matrice 162x162 des caractères reconnus (accentués, cedille).
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

19 avril 2007 12:54:45 :
J'ai posté le code sans le zip donc je le reposte!
05 mai 2007 16:35:56 :
Classe TAbaque et utilisation Ansistring!
  • signaler à un administrateur
    Commentaire de randriano le 19/04/2007 12:58:23

    Initiez-vous à la programmation sur les chiffrements avec cela, fini la cryptographie de Jules césar passons à un niveau plus élevé.

    je promets qu'il y aura une amélioration comme: classe TAbaque, abaque qui traite les 256 caractères.

  • signaler à un administrateur
    Commentaire de BruNews le 19/04/2007 15:03:22 administrateur CS

    Bien de vouloir s'élever mais faudra d'abord coder correctement.

    void PolyAlphabetique::buildstrkey()
    {
      int lk = strlen(cle);
      int ltxt;
      char *tmp = new char[255];
      if(strlen(textclair) > strlen(textcrypte)) ltxt = strlen(textclair);
      else ltxt = strlen(textcrypte);
      int d = ltxt / lk;
      int m = ltxt % lk;
      for(int i = 0; i < d; i++) strcat(chainecle, cle);
      if(m > 0) strncpy(tmp, cle, m);
      strcat(chainecle, tmp);
      chainecle[ltxt] = 0; //finir chainecle par le kre nul
    }

    char *tmp = new char[255];
    Où est le delete correspondant ???

    if(strlen(textclair) > strlen(textcrypte)) ltxt = strlen(textclair);
    else ltxt = strlen(textcrypte);
    strcat est une boucle, pas la peine de les REfaire inutilement.

    for(int i = 0; i < d; i++) strcat(chainecle, cle);
    d fois le reparcours complet de chainecle, contreproductif absolu.
    char *c, *d;
    d = chainecle;
    for(int i = 0; i < d; i++) {
      c = cle;
      while(*d = *c++) d++;
    }
    Voila sans aucun reparcours stérile de chainecle.

    Bonne continuation.

  • signaler à un administrateur
    Commentaire de yoyo269 le 19/04/2007 17:18:32

    Une petite question. C'est pas ce qu'on appelle le code Rome ce mode de cryptage ?

    YOYO, @+.

  • signaler à un administrateur
    Commentaire de BruNews le 19/04/2007 18:39:34 administrateur CS

    "strcat est une boucle, pas la peine de les REfaire inutilement."
    Je parlais bien entendu de "strlen".

  • signaler à un administrateur
    Commentaire de randriano le 22/04/2007 16:05:31

    En effet, j'avoue Brunews que j'ai oublié delete.
    La version 2.0 est proche mais un problème:

    [C++ Erreur fatale] sysmac.h(8): F1003 Erreur de directive : Do not include this file directly.  Include 'system.hpp'.

    J'ai créé une classe TAbaque qui sera un membre statique de la classe TPolyAlphabetique:
    cette erreur apparaît à la définition de cette membre:
    TAbaque * TPolyAlphabetique::abaque=new TAbaque();

  • signaler à un administrateur
    Commentaire de randriano le 05/05/2007 16:37:49

    J'ai apporté une grande modification à ce code comme la classe TAbaque et l'utilisation de AnsiString!

    Je vais vous demander les amis:
    Qu'est ce que c'est vraiment les erreurs C++ E2129, E...
    Elles ne sont pas claires car n'indiquent pas précisement la ligne de code ou l'identificateur qui cause l'erreur.

Ajouter un commentaire

Discussions en rapport avec ce code source

Pub



Appels d'offres

CalendriCode

Août 2008
LMMJVSD
    123
45678910
11121314151617
18192021222324
25262728293031

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Boutique

Boutique de goodies CodeS-SourceS