Lea en mode chiffrement (sea)

Soyez le premier à donner votre avis sur cette source.

Vue 5 064 fois - Téléchargée 1 042 fois

Description

Bonjour, voici un exemple de ce que peut donner un algorithme de hachage en mode chiffrement (ce n'est pas exactement la définition mais qu'importe, SEA dépend de LEA). Les fonctions sont réunies dans SEA.pas :
ObtainKey : permet d'obtenir une clef de cryptage/décryptage (calculée à partir du hash de la chaîne passée en paramètre). Il est recommandé d'utiliser cette fonction plutôt que de définir sa propre clef ... à moins que vous ne vouliez utiliser du SHA ou du MD5, ou quoi que ce soit pour obtenir votre clef :p).
EncryptFile : permet de crypter ou de décrypter un fichier rapidement. Possibilité d'utiliser un callback).
Encrypt : la fonction principale, crypte/décrypte un buffer de taille donnée, avec un mode (cryptage/décryptage), une clef de cryptage/décryptage et un callback optionel.

Pour les exemples d'encryptage, allez voir l'exemple (prenez un fichier texte, puis cryptez le, et réouvrez-le), car le site ne supporte pas l'unicode et donc des problèmes de caractères :/

Dernier conseil de sécurité : essayez un maximum de varier vos clefs : utiliser la même clef pour chaque message ce n'est pas top ...

Un exemple qui permet de crypter/décrypter les fichiers est fourni en démonstration, cependant pensez à faire des copies "au cas où", on ne sait jamais.
J'ai également inclus un fichier "Exemple.txt", crypté. Si vous êtes arrivés jusqu'à ce point de la description de la source, vous saurez le lire, car je vous indique que la clef est "Bacterius" ;)

Un autre exemple concernant les images permet de constater la qualité du cryptage (bon on voit rien, ça veut rien dire, je réfléchis à un meilleur exemple ...) !

Pour la description de l'algorithme, voir les commentaires (trouvez le bon ...)

Source / Exemple :


// In the zip

Conclusion :


Voilà, tous commentaires, conseils, remarques, critiques, etc ...

Codé et testé sous Delphi 6 & 7 Personal Edition.

Cordialement, Bacterius !

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Bacterius
Messages postés
3793
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
6 -
Bon voilà, alors tout change.
Maintenant c'est un encryptage par flux/bloc, c'est-à-dire que c'est calculé par bloc mais que ça donnerait le même résultat si on faisait octet par octet, c'est juste pour aller plus vite.
Voici le nouveau fonctionnement (ce sont des blocs de 512 bits) :

Encryptage :
1. On génère depuis la clef une signature de 512 bits théoriquement unique à cette clef.
2. On ajoute chaque bit de cette clef à chaque bit du premier bloc du message.
3. On génère depuis la signature précédente, une nouvelle signature 512 bits unique.
4. On ajoute chaque bit de cette clef à chaque bit du second bloc du message.
5. Etc ...

Décryptage : La même chose sauf qu'on soustrait la clef au bloc du message ;)

Propriétés : pour chaque clef, l'algorithme va générer une suite totalement unique de nombres pseudo-aléatoires.

Faiblesses : Si une partie du message ne contient que des bits à 0, et que cette information est rendue publique, alors 0 + Clef = Clef ...

Avantages : Pour pouvoir espérer décrypter le message sans connaître la bonne clef, il faut pouvoir extraire 512 bits de clef correctement placés dans le message AU MINIMUM. Et même en ayant cette information, il ne sera possible que de décrypter les données se trouvant APRES le bloc associé à la clef que l'on vient de trouver.

Cordialement, Bacterius !
Bacterius
Messages postés
3793
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
6 -
;D
D'ailleurs il faut que je mette à jour LEA-RNG et SEA avec la nouvelle mouture de LEA, tu m'y fais penser ... :p

Cordialement, Bacterius !
cs_cantador
Messages postés
4716
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
10 -
lea et sea sont dans un bateau..sea t.. (lol)
Bacterius
Messages postés
3793
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
6 -
Bon euh maintenant, c'est la même fonction que ça soit le cryptage ou le décryptage. Des améliorations notables dans l'algorithme :

- même calcul pour le cryptage/décryptage.
- XOR de l'octet avec les 16 octets de la clef, de façon itérative.
- hashage chaîné, chaque clef entraînera théoriquement la génération d'une suite unique de clefs de cryptage.

Pour le hashage chaîné, par exemple, disons qu'on a une clef "1".
1 => 5 => 3 => 2 => 6
2 => 6 => 8 => 9 => ...

Pour éviter les chaînes cycliques (cf. 1 => 2 => 1 => 2 => 1 => ...), on doit faire confiance à l'algorithme de hashage. Depuis sa modification, ses périodes devraient être suffisamment importantes pour assurer un cryptage correct.

Pour plus de questions, posez votre question en commentaire.

Cordialement, Bacterius !
John Dogget
Messages postés
390
Date d'inscription
vendredi 18 juin 2004
Statut
Membre
Dernière intervention
7 mai 2009
-
Je regarde tout ça dés que j'ai réinstallé delphi, j'ai fais un bon nettoyage à mon PC ^^

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.