Merci de la précision, intéressant tout ca :ccool:
Version imprimable
Merci de la précision, intéressant tout ca :ccool:
Pour, quand même, répondre à -4ian-, ce qu'il faudrait surtout savoir, c'est si ton souhait est:Dans le premier cas, et selon le niveau de sécurité que dont tu as besoin, MD5, SHA ou les autres peuvent faire l'affaire.
- de disposer d'un moyen "rapide" de "comparer" deux chaines afin de s'assurer qu'elles sont identiques (ou non) ou
- de disposer d'un moyen de stocker tes chaines de manière illisible, en étant en mesure de récupérer la chaine d'origine "à la demande"
Dans le second cas, il faut bel et bien se tourner vers AES, blowfish ou, pourquoi pas, une "simple" amélioration du cryptage de Cesar, selon, encore une fois, la sécurisation que tu souhaites obtenir ;)
Ouais mais bon, quand tu veux juste rendre illisible tes photo de vacances ...
Un pirate se les procures et peu ainsi t'admirer en maillot de bain sur la plage ? Waawww ....
Une protection faible n'est pas forcément mauvaise, tout dépend de ce qui est à protéger. Une protection adaptée à l'intérêt de conserver le secret est souvent plus efficace que de prendre la meilleure sécurité du monde. Ca a tendance a attirer l'attention :aie:
Il s'agit ( s'agissait ) bien de trouver un moyen de chiffrer une chaine de manière illisible et de pouvoir la décoder ensuite, pas une simple fonction de hash pour vérifier un mot de passe.
Je me suis tourné comme je l'ai dit vers l'AES, j'ai besoin d'un niveau de sécurité élevé, mais je déplore de devoir toujours se "taper" des classes qui utilisent par exemple des char* à tour de bras. En fonctionnement interne, c'est pas mon problème, mais à quand une classe qui définit par exemple
std::string AES::Encrypt(std::string str, std::string password) ?
Sa dépend les sources. (comprendre par qui ça a était codé). Ce genre de chose j'ai l'impression que c'est souvent un wrapper d'un code en C plutôt qu'autre chose... du coup on se tape du C/C++ à tout les étages.
qu'on me fasse pas dire ce que j'ai pas dis : y'a aussi de très belle implémentation hein...
Avoir un algorithme qui est implémenté en C ne me dérange pas, c'est plutôt le fait que la plupart des sources des algorithmes estampillées "C++" ne proposent qu'une classe qui utilise à foison du char*, du unsigned char * datain, du EncryptBlock ( Du C with classes :aie: ) et on a vite ( très vite ) fait de se planter avec ça.
Proposer ceci peut évidemment être utile à plus d'une personne, mais je pense que certains aimerait aussi des fonctions simples comme évoquée ci dessus.
Le fait est que le char* est, en définitive, le socle commun qui permet, le cas échéant, de crypter autre chose que des chaines de caractères (des valeurs numériques, entières ou non, par exemple).
Il n'est, en effet "pas impossible" que le cryptage des données porte sur... autre chose que des chaines de caractères, et donc, que le recours au "socle commun" s'avère nécessaire.
Evidemment, si on a la certitude de n'utiliser que des chaines de caractères, il peut rapidement devenir contraignant de se *taper* ce socle commun.
Mais rien n'empêche, si, effectivement, tu as cette certitude, de fournir une interface utilisant les chaines de caractères et non le char* ;)
Je ne l'ai pas personnellement utilisée, mais le toolkit keyczar a l'air intéressant :
http://code.google.com/p/keyczar/
Exemple :
Code:
1
2
3
4
5 keyczar::Keyczar* crypter = keyczar::Encrypter::Read(location); if (!crypter) return 1; std::string ciphertext; bool result = crypter->Encrypt(input, &ciphertext);
Oui, j'avais vu ça, ça correspondait bien à ce que j'avais besoin, mais j'ai failli m'étrangler en voyant que ce n'est pas encore compilable en C++ sous Windows.
Juste pour me situer un peu, j'ai fait un programme de chiffrement de message contenu dans un fichier, j'ai utiliser RSA.
La bibli GMP pour les grand nombre, mais pour ton cas, utiliser RSA avec des petits nombres ca ne te conviendrai pas? et pkoi?
RSA avec des petit nombres, c'est nul. RSA est intéressant si tu y va avec des grand nombres que tu ne peut pas factoriser, sinon, le coté asymétrique ne sert plus a rien.
Sinon, c'est bien d'avoir fait du RSA, mais c'est bête car pour peu que ton claire soit plus grand que ta clef, tu es faible devant les attaques statistiques. RSA, ça sert a crypter les clef d'algo symétriques, type AES par exemple.