Cryptage/decryptage d'une chaine [tout compilateur]

Soyez le premier à donner votre avis sur cette source.

Snippet vu 12 657 fois - Téléchargée 39 fois

Contenu du snippet

Ce programme crypte et decrypte une chaine de caractere donné par l'utilisateur à l'aide d'un algorithme très simple.

Source / Exemple :


#include <iostream>
#include <string>

using namespace std;

string crypte(string x,int plus) 
{
for(int i=0;i<(int)x.size();i++)
{
x[i]=x[i]+plus;
}
return(x);
}

string decrypte(string x,int moins) 
{
for(int i=0;i<(int)x.size();i++)
{
x[i]=x[i]-moins;
}
return(x);
}

int main()
{
cout << "\033[2J" << "Entrez une chaine :\n";
string s;
getline(cin,s);
cout << "\nEntrez la cle de cryptage (uniquement des chiffres) : ";
long cle;
cin >> cle;
cout << "Message crypte : " << crypte(s, cle) << "\nMessage decrypte : " << decrypte(crypte(s, cle), cle) << "\n";
}

A voir également

Ajouter un commentaire Commentaires
Messages postés
8
Date d'inscription
mardi 24 novembre 2009
Statut
Membre
Dernière intervention
4 mai 2010

Très bien.
Utilisateur anonyme
oupss remplacer for(int i; i<strlen(cleChar))cle+=charCle[ind++];
par for(int i; i<strlen(cleChar);i++)cle+=charCle[i];
et supprimer la déclaration de "ind" :s
Utilisateur anonyme
Ouais super code et merci Vahl pour ta modification qui permet d'avoir qui fait un décalage différent pour chaque caractaire :)

Aussi pour que la clée de cryptage puisse avoir des lettres et des chiffres j'ai fais cela:

char cleChar[1024];
int cle;
int ind=0;
scanf("%s", cleChar);
for(int i; i<strlen(cleChar))cle+=charCle[ind++];
cle/=strlen(charc);

Mais scanf n'accepte pas les espaces :s a remplacer par la fonction de son choix...
Messages postés
755
Date d'inscription
samedi 15 mai 2004
Statut
Membre
Dernière intervention
30 janvier 2011

simple et rapide s'adapte a tout compilateur :10/10
Messages postés
1
Date d'inscription
lundi 20 novembre 2000
Statut
Membre
Dernière intervention
1 juillet 2005

Ce n'est pas du cryptage 8bits ni même 16, c'est plutôt un décalage (on décale chaque lettre ou chiffre du nombre de la clé)
C'est un peu trop uniforme, je le changerais en (pour rester dans le simple):

string crypte(string &x,int plus)
{
for(int i=0;i<(int)x.size();i++)
{
int z=static_cast(x.size());
x[i]=x[i]+(plus-(i*i)-z);
}
return(x);
}

string decrypte(string &x,int moins)
{
for(int i=0;i<(int)x.size();i++)
{
int z=static_cast(x.size());
x[i]=x[i]-(moins-(i*i)-z);
}
return(x);
}

(je suis obligé de faire le stati cast car un de mes deux compilateurs y voyait un forçage de type (l'autre non))
Afficher les 7 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.