Cryptage/decryptage d'une chaine [tout compilateur]

0/5 (7 avis)

Snippet vu 13 116 fois - Téléchargée 40 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
cs_curite Messages postés 8 Date d'inscription mardi 24 novembre 2009 Statut Membre Dernière intervention 4 mai 2010
28 déc. 2010 à 16:54
Très bien.
Utilisateur anonyme
31 août 2006 à 21:44
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
31 août 2006 à 21:41
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...
wxccxw Messages postés 755 Date d'inscription samedi 15 mai 2004 Statut Membre Dernière intervention 30 janvier 2011
26 juil. 2006 à 15:37
simple et rapide s'adapte a tout compilateur :10/10
Vahl Messages postés 1 Date d'inscription lundi 20 novembre 2000 Statut Membre Dernière intervention 1 juillet 2005
1 juil. 2005 à 00:36
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.