bah c'est basique, mais c'est déjà pas mal
une autre solution que je m'étais amusé à faire, toute aussi banale, c'était encrypter avec mot de passe, en additionnant le code asci de chaque lettres du mot de passe une à une avec le texte... pas clair
[T]toto va à la plage
[P]azerty
|
=> j'ajoute 'a' à 't' => ça donne le premier caractère
=> j'ajoute 'z' à 'o' => ça me donne le second
=> et ainsi de suite. lorsque j'ai fini toutes les lettres du mot de passe, je reprend la séquence des lettres du mot de passe depuis 0
=> l'intérêt, c'est que ça prends un millième de secondes de plus à cracker
ensuite, un système classique consiste à reprendre une approche que je trouve similaire à celle de huffman (compression) mais en l'inversant, et, au contraire, en gonflant la taille du fichier :
par exemple, pour une encryption sur 128 bits
"bonjour"
=> je compte chaque caractère différent
b = 1
o = 2
n = 1
j = 1
u = 1
r = 1
Je prends réparti de façon homongène mes caractères sur l'ensemble des valeurs possible de 0 à 2^127
=> ensuite, je remplace aléatoirement les caractères de mon texte par des membres de chaque plage correspondant à chaque caractère
la clé c'est juste la liste des indices de tes caractères trouvés.
en l'améliorant un peu, ce système est déjà bien plus difficile à cracker, puisqu'un même caractère peut avoir un (très) grand nombre de représentations différentes possibles. et vu que le choix de ses représenations est en fonction du nombre d'occurences, ça te donne un fichier en résultat totalement homogène : impossible de détecter les caractères qui sont souvent présents dans le code.
avec ce système par exemple, on sait qu'un fichier HTML commence (normalement) toujours par "<!DOCTYPE " => on sait donc, avec ton système retrouver toutes les occurences de ces lettres en un clin d'oeil. en réfléchissant un peu, on trouve que c'est un bête offset et le tour est joué. avec mon premier système, "azerty" est plus cours que "<!DOCTYPE " donc à nouveau, l'algo est trouvé en un pouillème de secondes.
avec le second système par contre, c'est un "miracle" si j'arrive à retrouver d'autres occurences de mes valeurs de remplacement dans le fichier. à partir de là, ça va devenir bonbon ne serait-ce que pour savoir quel algo a été utilisé. quant au brute force... idem, ça commence à devenir chocolat... par contre, si t'as bien suivit, ça multiplie la taille du fichier par 4
en reprenant toujours le système d'huffman, on peut s'amuser à construire une table de huffman qui monte jusqu'à 128 bits, et répartir toujours de façon proprotionnelle les caractères dedans. là, très franchement, ça commence à devenir très complexe pour le craquer : on doit recréer une table de huffman, et tester un peu toutes les combinaisons de ranges possible. pour un fichier ANSI, no souci, grace au 8° bit de poids fort dans le fichier original, on se rends compte immédiatement des erreurs... mais pour un document binaire...
après, je me suis jamais posé la question d'aller plus loin. à la base, y'a des fonctions 3DES et autres dans tous les langages ou presque, donc autant ne pas réinventer la roue 
Message édité par MagicBuzz le 28-03-2007 à 17:53:30