begin process at 2012 05 27 15:29:19
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths & Algorithmes

 > DÉCRYPTAGE C++

DÉCRYPTAGE C++


 Description

Cliquez pour voir la capture en taille normale
Ce programme permet de décrypter n'importe quel fichier dont le codage est constant (exemple du code césar).

Dans un premier temps il fait une boucle en augmentant la valeur ascii de chaque caractère.
Puis il enregistre ses résultats dans un fichier nommé "Fichier_e.txt"

Ensuite il propose de rechercher des mots provenant d'une base de données (dictionnaire) avec le résultat. Pour ce faire, vous devez rentrer le nom de la base de donnée (ici "database.txt") et une affinité de recherche (qui permet de trouver tous les mot qui ont en commun ce nombre de caractères).
Ceci étant fait, il affiche les mots trouvés.

Enfin il ne reste qu'a ouvrir "Fichier_e.txt" et taper une recherche de l'un de ces mots pour avoir la ligne où ce trouve le bon résultat.

Source

  • #include <iostream>
  • #include <string>
  • #include <fstream>
  • #include <vector>
  • using namespace std;
  • int main()
  • {
  • cout << "\t\t******* Bienvenue dans RY-Decrypt 1.0 ********" << endl << endl;
  • //********** Partie Decryptage **********/
  • bool compar;
  • char m_dir[200];
  • vector <char>v;
  • cout <<endl << "Chemin du fichier a decrypter : " ;
  • cin >> m_dir;
  • ifstream fin(m_dir);
  • char ch;
  • char *d;
  • while (fin.get(ch))
  • {
  • v.push_back(ch);
  • d+=ch;
  • }
  • ofstream fichier("Fichier_e.txt", ios::out | ios::trunc);
  • bool prendre = false;
  • std::string mot;
  • int ligneComprise = 0;
  • if (fichier)
  • {
  • cout << "\nEn travail...";
  • for (int i = 0; i < 256; i++)
  • {
  • for (int t = 0; t < v.size();t++)
  • {
  • v.at(t) = v.at(t) + 'i';
  • if (v.at(t) != '\a' && isalnum(v.at(t)))
  • fichier<< v.at(t);
  • }
  • fichier<<endl<<endl<<"................................."<<endl<<endl;
  • }
  • fichier.close();
  • }
  • int rech = 2;
  • cout << endl << endl<<"Voulez vous comparer avec une base de donnees ? (1)Oui (2)Non : ";
  • cin >> rech;
  • if (rech == 1)
  • {
  • string database = "";
  • cout <<endl << endl << "Nom de la base de donnees : ";
  • cin >> database;
  • //************Partie recherche*************
  • int affinite = 100;
  • cout << endl << "Affinite de votre recherche : ";
  • cin >> affinite;
  • cout << "\n\n\n";
  • if (affinite > 1)
  • {
  • char ctr_e = '\0';
  • string tmp_d;
  • int var = 0;
  • vector <string> vec_d;
  • string str_e = "";
  • ifstream tempf_e ("Fichier_e.txt", ios::in);
  • if (tempf_e)
  • {
  • while (tempf_e.get(ctr_e))
  • {
  • str_e += char(ctr_e);
  • }
  • tempf_e.close();
  • }
  • else
  • {
  • cerr << "Erreur : ouverture Fichier_e" << endl;
  • }
  • var = 0;
  • ctr_e = '\0';
  • ifstream tempf_d (database.c_str(), ios::in);
  • if (tempf_d)
  • {
  • cout << "\nEn travail...\n\n";
  • while (getline(tempf_d,tmp_d))
  • vec_d.push_back(tmp_d);
  • tempf_d.close();
  • }
  • else
  • {
  • cerr << "Erreur : ouverture " << database << endl;
  • }
  • int occ = 0;
  • int nbLigne = 1;
  • for (var = 0; var < (int)vec_d.size(); var++)
  • {
  • int pos = str_e.find(vec_d[var]);
  • if (pos != -1 && vec_d[var].size() >= affinite)
  • {
  • cout << "->Mot trouve : "<< vec_d[var] << endl;
  • occ++;
  • }
  • pos =0;
  • }
  • cout << endl << "Il y a " << occ << " occurence.";
  • }
  • }
  • cout << ("\n\n\n\n");
  • system("PAUSE");
  • return 0;
  • }
#include <iostream>
#include <string>
#include <fstream>
#include <vector>

using namespace std;

int main()
{

cout << "\t\t******* Bienvenue dans RY-Decrypt 1.0 ********"  << endl << endl;

//********** Partie Decryptage **********/

bool compar;


    char m_dir[200];
vector <char>v;
    cout <<endl << "Chemin du fichier a decrypter : " ;
    cin >> m_dir;

    ifstream fin(m_dir);


    char ch;
    char *d;
    while (fin.get(ch))
    {
       v.push_back(ch);
        d+=ch;
    }

    ofstream fichier("Fichier_e.txt", ios::out | ios::trunc);
    bool prendre = false;
    std::string mot;
    int ligneComprise = 0;
    if (fichier)
    {


cout << "\nEn travail...";
        for (int i = 0; i < 256; i++)
        {
            for (int t = 0; t < v.size();t++)
            {
                v.at(t) = v.at(t) + 'i';
                if (v.at(t) != '\a' && isalnum(v.at(t)))

                fichier<< v.at(t);


            }


            fichier<<endl<<endl<<"................................."<<endl<<endl;

        }

        fichier.close();
    }



int rech = 2;
cout << endl << endl<<"Voulez vous comparer avec une base de donnees ? (1)Oui (2)Non : ";
cin >> rech;
if (rech == 1)
{
string database = "";
cout <<endl << endl << "Nom de la base de donnees : ";
cin >> database;
//************Partie recherche*************

int affinite = 100;

cout << endl << "Affinite de votre recherche : ";
cin >> affinite;
cout << "\n\n\n";
if (affinite > 1)
{

    char ctr_e = '\0';
    string tmp_d;

    int var = 0;


    vector <string> vec_d;
    string str_e = "";

    ifstream tempf_e ("Fichier_e.txt", ios::in);
    if (tempf_e)
    {

        while (tempf_e.get(ctr_e))
        {
            str_e += char(ctr_e);
        }
        tempf_e.close();

    }

    else
    {
        cerr << "Erreur : ouverture Fichier_e" << endl;
    }

    var = 0;
    ctr_e = '\0';

    ifstream tempf_d (database.c_str(), ios::in);
    if (tempf_d)
    {
cout << "\nEn travail...\n\n";
        while (getline(tempf_d,tmp_d))

            vec_d.push_back(tmp_d);
        tempf_d.close();
    }
    else
    {
        cerr << "Erreur : ouverture " << database  << endl;
    }

int occ = 0;
int nbLigne = 1;
    for (var = 0; var < (int)vec_d.size(); var++)
    {
        int pos = str_e.find(vec_d[var]);
        if (pos != -1 && vec_d[var].size() >= affinite)
        {
         cout << "->Mot trouve : "<< vec_d[var] << endl;

occ++;
        }

pos =0;

    }

cout << endl <<  "Il y a " << occ << " occurence.";


}
}
  cout << ("\n\n\n\n");

    system("PAUSE");

    return 0;
}

 Conclusion

Assez laborieux, complexe à utiliser... mais ça ne reste que la toute première version :)

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip Source avec une capture [C] EXECUTION D'UNE FONCTION PAR SON NOM
Source avec Zip Source avec une capture XCOUPE : COUPE 2D
Source avec Zip Source avec une capture [C++] CLASSE DE GESTION DE FONCTIONS
Source avec Zip Source avec une capture RY-CASSEBRIQUES
Source avec une capture [C++] & SFML CRYPTOGRAPHIE

 Sources de la même categorie

Source avec Zip UN EXAMPLE D'APPLICATION EN CUDA DE L'ALGORITHME DE SCAN POU... par oguzaras
Source avec Zip Source avec une capture CHIFFREMENT DE VIGENERE par lajouad
Source avec Zip Source avec une capture ANALYSE SYNTAXIQUE par lajouad
Source avec Zip Source avec une capture STRUCTURE D'UNE MATRICE PAR LES LISTE LINÉAIRE (NON CONTUGUS... par benzarabel
Source avec Zip Source avec une capture DESSINER UNE ARBRE BINAIRE( MODE CONSOLE): par benzarabel

 Sources en rapport avec celle ci

Source avec Zip UN EXAMPLE D'APPLICATION EN CUDA DE L'ALGORITHME DE SCAN POU... par oguzaras
Source avec Zip Source avec une capture RÉSOLUTION SUDOKU (9X9) PAR BACKTRACKING RÉCURSIF INTELLIGEN... par Gallien69
Source avec Zip A2DCRYPT - CRYPTAGE 2048 BITS par darkor
Source avec Zip Source avec une capture ALGORITHME DE CRYPTAGE/DECRYPTAGE par besilent
Source avec Zip METHODE SIMPLE DE CRYPTAGE par professeurr

Commentaires et avis

Commentaire de stagiairecpp le 10/04/2010 10:41:36

Salut.
Utiliser la fréquence des lettres décodées (car ici il s'agit bien d'un codage et non pas d'un cryptage) serait moins lourd et tout autant efficace je pense pour déterminer l'alphabet le plus probable.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Cryptage par l'algorithme MD5 [ par LSRS ] [red]Salut tout le monde!!!J'ai un problème avec l'algorithme MD5 de RSA... je voudrais bien comprendre le mécanisme avec lequel il travaille...En plu Quelques questions sur rsa [ par jean84 ] Salut a tous ! Je me suis interesse a l'algorithme de cryptage rsa il y a quelque temps mais j'avoue avoir encore du mal avec certains points CRYPTAGE/ DECRYPTAGE DES PIXELS [ par darwin13 ] J'ai crié un algorithme de cryptage/ décryptage statique pour les pixels des images je demande un programme informatique (java ou c) pour le cryptage algo canny [ par salma2011 ] Slt tt le monde,,Je veux detecter les contours d'une image avec l'algorithme de canny  en utilisant le langage c++  ..je veux un simple code( en c++ ) contour actif [ par mar1985 ] Bonjour,S'il vous plaît j'ai besoin de votre aide et c très urgent.j'implémente l'algorithme de contour actif.Comme vous le savez, il y a plusieurs im Création de nombres en binaire [ par mrpsychopathe ] Bonjour,J'essaye de faire un petit programme de compression de fichier et donc je cherche un algorithme qui permet de créer des nombres en binaire en [BAR]Decryptage vers texte [ par charlineproxy ] Hello !!! Je suis Charline et je débute dans la programmation donc merci de m'aider un petit peu !!! J'ai un petit problème (déjà!), Cryptage de données d'un fichier [ par raphchar ] BonjourJe souhaiterai créer un programme pour crypter un fichier quelconque. Pour cela je voulais passer par la suite d'octes qui composent le fichier


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,950 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales